docker-compose не может установить значения env автоматически - PullRequest
0 голосов
/ 07 июня 2019

В приложении есть скрипт start.sh:

scripts / start.sh

#!/bin/bash

source /env/set.sh

env / set.sh content:

#!/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 не работает?

1 Ответ

1 голос
/ 07 июня 2019

Предположим, вам нужно установить его после запуска контейнера, и вы не можете использовать переменные окружения docker-compose.

Вы используете сценарий, который экспортирует все необходимые переменные, но затем вы закрываете этот сеанс bash, вам нужно сделать экспорт постоянным. Я описал способ сделать это в похожем вопросе здесь .

Вам нужна точка входа:

#!/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.

...