应用程序下面有一个start.sh
脚本:
scripts / start.sh
#!/bin/bash
source /env/set.sh
env / set.sh内容:
#!/bin/bash
export DB_USERNAME=a
export DB_PASSWORD=b
docker-compose.yml
version: '3.4'
services:
web:
build: .
expose:
- "5000"
command: scripts/start.sh
tty: true
stdin_open: true
运行docker-compose build && docker-compose up
后,登录到容器,尚未设置env值。但应手动运行source /env/set.sh
。
command: scripts/start.sh
为什么不起作用?
答案 0 :(得分:1)
假设您需要在容器启动后进行设置,并且不能使用docker-compose环境变量。
您正在采购脚本,该脚本导出所有需要的变量,但是随后您关闭了该bash会话,您需要使导出永久化。我在类似的问题here中描述了一种解决方法。
您需要的是一个入口点:
#!/bin/bash
# if env variable is not set, set it
if [ -z $DB_USERNAME ];
then
# env variable is not set
export DB_USERNAME=username;
fi
# pass the arguments received by the entrypoint.sh
# to /bin/bash with command (-c) option
/bin/bash -c $@
然后将该脚本添加为docker-compose文件中的入口点。