docker-compose无法自动设置环境值

时间:2019-06-07 02:57:13

标签: docker docker-compose environment

应用程序下面有一个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.shcommand: scripts/start.sh为什么不起作用?

1 个答案:

答案 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文件中的入口点。