Можно ли получить исходный файл среды при запуске файла docker-compose из Docker Stack? - PullRequest
0 голосов
/ 07 марта 2019

Я бы хотел создать ссылку sym и получить исходный файл окружения из моего файла docker-compose при запуске с помощью Docker Stack. Как это:

version: '3'

services:
  hello_world:
    image: nginx:latest
    ports:
     - "80:80"
    volumes:
      - ./config:/config:ro   
      - ./data:/data          
    command:
      - /bin/bash
      - -c
      - |
        ln -s /config/lala /etc/nginx/lala
        source /config/env
        nginx -g 'daemon off;'

Вы видите, что моя команда сначала создает символическую ссылку, затем создает файл среды, найденный в каталоге / config, который смонтирован на томе, а затем запускает nginx. Я знаю, что есть другие способы поместить переменные среды в файл docker-compose, но Я пытаюсь отделить аспекты среды от самого файла docker-compose.

Я запускаю это с помощью Docker Stack, вот так:

docker stack deploy -c docker-compose-local.yml nginx-test

но когда я заливаю в контейнер:

docker exec -it 5c /bin/bash

Я вижу, что пока моя символическая ссылка работала, переменные окружения не загружаются:

root@5c562e102cf4:/# env
HOSTNAME=5c562e102cf4
NJS_VERSION=1.15.9.0.2.8-1~stretch
NGINX_VERSION=1.15.9-1~stretch
PWD=/
HOME=/root
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

root@5c562e102cf4:/# cat /etc/nginx/lala 
asdfadf

root@5c562e102cf4:/# source /config/env 
root@5c562e102cf4:/# env
TEST_NGINX_ENV_SETTING=test_setting1
HOSTNAME=5c562e102cf4
NJS_VERSION=1.15.9.0.2.8-1~stretch
TEST_POSTGRES_ENV_SETTING=test_setting2
NGINX_VERSION=1.15.9-1~stretch
PWD=/
HOME=/root
TERM=xterm
SHLVL=1
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
_=/usr/bin/env

Очень ценю любого, кто может помочь мне получить этот файл с подключенного тома ИЛИ понять, почему то, что я пытаюсь сделать, может вообще не сработать.

1 Ответ

0 голосов
/ 08 марта 2019

Возможно, вы могли бы попытаться скопировать содержимое вашего тома в модифицированный файл Docker и загрузить переменные среды через точку входа.

Dockerfile будет:

FROM nginx:latest
COPY ./config /config

ENTRYPOINT ["bash", "start.sh"]

start.sh будет:

# !/bin/bash
source /config/env
nginx -g 'daemon off;'

И файл stack.yml будет:

version: '3'

services:
  nginx:
    image: nginx:latest
    ports:
     - "80:80"
    volumes:
      - ./data:/data

Примечание: Вы также можете добавить символическую ссылку в точку входа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...