【运维】解决容器中supervisord无法获取宿主机环境变量的问题

本文探讨了在Docker环境中通过docker-compose将宿主机环境变量传递给容器,并确保这些变量能在Supervisor进程中生效的过程。作者遇到的问题是,尽管环境变量已传入容器,但Supervisor管理的服务无法获取到这些变量。解决方案是在docker-compose.yml中通过命令行设置环境变量,然后在Dockerfile中使用ARG并在ENTRYPOINT或CMD中执行命令。最终,通过修改docker-compose.yml的command字段,成功实现了环境变量的传递并被Supervisor服务使用。

dockerfile构建镜像
docker-compose运行容器
supervisor进程管理

部署过程中,想通过在宿主机上设置环境变量,容器获取宿主机的环境变量,服务使用环境变量启动

首先想到的是通过docker-compose.yml文件中的environment标签,将宿主机的环境变量传入容器中

# docker-compose.yml
version: "3.8"
services: 
  service:
  	...
    environment:
      - requestSecret=$requestSecret
      - username=$username
      - password=$password

结果也确实传入容器中了,但supervisor启动的服务并没有获取到环境变量
这是因为

Subprocesses will inherit the environment of the shell used to start the supervisord program. Several environment variables will be set by supervisord itself in the child’s environment also, including SUPERVISOR_ENABLED (a flag indicating the process is under supervisor control), SUPERVISOR_PROCESS_NAME (the config-file-specified process name for this process) and SUPERVISOR_GROUP_NAME (the config-file-specified process group name for the child pro

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值