docker-compose.yml中入口点中env fiile中的环境变量
我想在docker compose的入口点中使用env文件中的变量:docker-compose.yml中入口点中env fiile中的环境变量,docker,environment-variables,docker-compose,entry-point,Docker,Environment Variables,Docker Compose,Entry Point,我想在docker compose的入口点中使用env文件中的变量: # environment.env HOST=example.com # docker-compose.yml some_service: ... env_file: ['environment.env'] entrypoint: ['myexecutable', '--host', '$HOST'] 有办法吗?我只找到了一个解决方案: # docker-compose.yml
# 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的概念“每个容器一个进程”(因为将有两个进程:
sh
和myexecutable
)。容器不能正常停止,我必须用docker kill
或docker compose kill
杀死它,我不确定env文件,但是如果它已经是shell会话中的环境变量,您可以在docker compose文件中用${your_env_var_here}使用它
如果只想拥有一个进程,可以运行sh-c“exec myexecutable--host…”
,这样它就可以作为单个进程接管。虽然“每个容器一个进程”通常意味着您不运行进程管理器。一个过程启动另一个过程并不罕见
要在SIGTERM上正确退出命令,需要设置显式信号处理程序。您可以使用bash中的
trap
或应用程序本身来实现这一点。另请参见问题完全是关于env文件的,因为它存储了服务的配置…Entrypointexec myexecutable
对我不起作用:它表示未找到或不存在容器命令。
;根据docker的理念,entrypointsh-c'exec myexecutable--host$$host'
将是正确的解决方案吗?对不起,我是说sh-c'exec…'