繁体   English   中英

来自docker-compose.yml入口点的env fiile的环境变量

[英]Environment variables from env fiile in entrypoint in docker-compose.yml

我想在入口点使用docker-compose中的env-file变量:

  # environment.env
  HOST=example.com

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

有没有办法做到这一点? 我发现只有一个解决方案:

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

但它看起来违反了docker概念“每个容器一个进程”(因为将有2个进程: shmyexecutable )。 并且容器没有正常停止,我必须使用docker killdocker-compose kill来杀死它。

如果你想只有一个进程,你可以运行sh -c 'exec myexecutable --host ...'以便它将作为单个进程接管。 虽然“每个容器一个进程”通常意味着您不运行进程主管。 一个进程启动其他进程并不罕见。

要在SIGTERM上正确退出命令,您需要设置显式信号处理程序。 您可以使用bash中的trap或应用程序本身来实现。 另请参见https://docs.docker.com/compose/faq/#why-do-my-services-take-10-seconds-to-recreate-or-stop

我不确定env文件,但如果它是shell会话中已有的环境变量,则可以在${your_env_var_here} -compose文件中使用${your_env_var_here}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM