Как я могу запустить несколько версий одной и той же сборки в docker-compose? - PullRequest
2 голосов
/ 14 мая 2019

TL / DR: можно ли использовать .env файловые переменные в директивах environment docker-compose?


У меня есть Dockerfile, который использует переменную ARG для копирования файлов на основе переменной среды.

В моем docker-compose я хочу запустить две версии этого контейнера с различной конфигурацией.

Есть ли способ, где я могу установить разные пути к файлам в одном файле .env и создать его дважды, как в примере ниже?

Или есть более разумный способ сделать это?


/
/.env
/docker-compose.yml
/app
/app/Dockerfile
/version1/data
/version2/data

/. Окр


VERSION_1_PATH=./version1/data
VERSION_2_PATH=./version2/data

/ приложение / Dockerfile

FROM node:latest

ARG APP_PATH             # pull this environment variable
COPY $APP_PATH /var/app/ # use it to copy source to the same generic destination

/ докер-compose.yml

version: "3"
services:
  version1:
    build: ./app
    container_name: version1
    env_file: 
      - '.env'
    environment:
      APP_PATH: ${VERSION_1_PATH}

  version2:
    build: ./app
    container_name: version2
    env_file: 
      - '.env'
    environment:
      APP_PATH: ${VERSION_2_PATH}

1 Ответ

1 голос
/ 14 мая 2019

Вы можете добавить args в файл compose для определения сборки, примерно так:

version: '3'
services:
  version1:
    build:
      context: ./app
      args:
        - APP_PATH=${VERSION_1_PATH}

  version2:
    build:
      context: ./app
      args:
        - APP_PATH=${VERSION_2_PATH}

И нет необходимости определять .env в env_file, если просто хотите, чтобы он использовался в сборке, поскольку .env может использоваться по умолчанию в docker-compose.yml. И, environment также не для build, это для running container.

Один пример , К вашему сведению.

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