Variabili di ambiente da env fiile a entrypoint in docker-compose.yml

Vorrei usare la variabile da env-file in dockercompose nel punto di ingresso:

# environment.env HOST=example.com # docker-compose.yml some_service: ... env_file: ['environment.env'] entrypoint: ['myexecutable', '--host', '$HOST'] 

C'è un modo per farlo? Ho trovato solo una soluzione:

  # docker-compose.yml some_service: ... env_file: ['environment.env'] entrypoint: sh -c 'myexecutable --host $$HOST' 

Ma sembra viola la concezione del docker "un process per contenitore" (perché ci saranno 2 processi: sh e myexecutable ). E il contenitore non si ferma normalmente, devo ucciderlo con l' docker kill docker-compose kill o l' docker kill docker-compose kill .

Se si desidera avere un solo process, è ansible eseguire sh -c 'exec myexecutable --host ...' modo da assumere il ruolo di singolo process. Anche se "un process per contenitore" in genere significa che non si esegue un supervisore di process. Non è così raro che un process inizia gli altri.

Per poter eseguire correttamente il command su SIGTERM è necessario impostare gestori di segnali espliciti. Puoi farlo con la trap in bash o nell'applicazione stessa. Vedi anche https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop

Non sono sicuro del file env, ma se è una variabile di ambiente già nella session di shell, puoi utilizzarla nel file di ${your_env_var_here} con ${your_env_var_here}