Coder Social home page Coder Social logo

Comments (5)

Abyss777 avatar Abyss777 commented on August 22, 2024 2

Here is my workaround for secret files with MySQL DB

deploy docker swarm command

docker stack deploy -c ./traccar.yaml traccar

traccar.yaml

version: "3.9"

services:
  db:
    image: mysql
    ports:
      - 3306:3306
    environment:
      TZ: "Asia/Yekaterinburg"
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/dbpwd-root
      MYSQL_DATABASE: traccar
      MYSQL_USER: traccar
      MYSQL_PASSWORD_FILE: /run/secrets/dbpwd-traccar
    command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci --skip-log-bin
    volumes:
      - ./db/data:/var/lib/mysql:rw
    secrets:
      - dbpwd-root
      - dbpwd-traccar
  traccar:
    image: traccar/traccar:ubuntu
    ports:
      - 8082:8082
      - 5000-5245:5000-5245
      - 5000-5245:5000-5245/udp
    environment:
      CONFIG_USE_ENVIRONMENT_VARIABLES: "true"
      DATABASE_DRIVER: "com.mysql.cj.jdbc.Driver"
      DATABASE_URL: "jdbc:mysql://db:3306/traccar?allowPublicKeyRetrieval=true&useSSL=false&allowMultiQueries=true&autoReconnect=true&useUnicode=yes&characterEncoding=UTF-8&sessionVariables=sql_mode=''"
      DATABASE_USER: traccar
      DATABASE_PASSWORD_FILE: /run/secrets/dbpwd-traccar
    volumes:
      - ./traccar/logs:/opt/traccar/logs:rw
      - ./traccar/entrypoint.sh:/usr/local/bin/entrypoint.sh:ro
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    entrypoint: /usr/local/bin/entrypoint.sh
    depends_on:
      - db
    secrets:
      - dbpwd-traccar
secrets:
   dbpwd-root:
     file: secrets/db_root_password
   dbpwd-traccar:
     file: secrets/db_traccar_password

The workaround itself, fill password environment variables from secret files.
content of ./traccar/entrypoint.sh

#!/bin/bash
## Set environment variables by their respective secrets
supportedSecrets=( "DATABASE_PASSWORD"
                   "MAIL_SMTP_PASSWORD"
                   "LDAP_PASSWORD"
                 )
for secret in ${supportedSecrets[@]}; do
    envFile="${secret}_FILE"
    if [ $(printenv ${envFile}) ]; then envFileName=`printenv ${envFile}`; fi
     if [[ ${!envFile} && -f "$envFileName" ]]; then
         val=`cat $envFileName`
         export "${secret}"="$val"
         echo "${secret} environment variable was set by secret ${envFile}"
     fi
done

java -Xms1g -Xmx1g -Djava.net.preferIPv4Stack=true -jar tracker-server.jar conf/traccar.xml

DB passwords are stored in secrets/db_root_password and secrets/db_traccar_password

The only problem that we need bash.

from traccar-docker.

tananaev avatar tananaev commented on August 22, 2024

It is actually already supported.

Nice to see you back 😉

from traccar-docker.

Abyss777 avatar Abyss777 commented on August 22, 2024

Oh, my bad, have not checked the code, only documentation.
But i think, secret files is not implemented yet ?

I too like your project to forget about it :)

from traccar-docker.

tananaev avatar tananaev commented on August 22, 2024

Yeah, not the secret files.

from traccar-docker.

SebastEnn avatar SebastEnn commented on August 22, 2024

Any update on this? When can we use docker secret without having to use a script as a workaround?

from traccar-docker.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.