Подстановка переменных в команде docker -compose - PullRequest
0 голосов
/ 11 марта 2020

Мне нужно передать переменную env из файла в команду в docker -compose, но это кажется невозможным. Поэтому сначала я пытаюсь использовать среду var, но она снова не работает. Как я могу это сделать?

version: '3'
services:
  nginx-service-xxx:
    image: service-xxx-nginx:latest
    ports:
      - 80:80
    restart: always

  service-xxx:
    image: service-xxx:latest
#    env_file:
#        - db-settings.env
    environment:
      - PORT=80
      - PG-HOST=192.168.0.101
      - PG-DATABASE=xxx
      - PG-USER=postgres
      - PG-PASSWORD=postgres
    restart: always
    command: python xxx/main.py --port=$$PORT --pg-host=$$PG-HOST --pg-database=$$PG-DATABASE --pg-user=$$PG-USER --pg-password=$$PG-PASSWORD

1 Ответ

0 голосов
/ 11 марта 2020

попытайтесь переместить сложность команды в docker точку входа. Во-первых, вам нужно добавить следующую точку входа в ваш проект (сделать его исполняемым)

#!/bin/bash -e

case $1 in

  web)
    python xxx/main.py --port=$PORT --pg-host=$PG-HOST --pg-database=$PG-DATABASE --pg-user=$PG-USER --pg-password=$PG-PASSWORD
  ;;

  *)
    exec "$@"
  ;;

esac

exit 0

обновить файл docker для вашей службы

From base-image

COPY ./docker-entrypoint.sh /
ENTRYPOINT ["/docker-entrypoint.sh"]

обновить составить

version: '3'
services:
  nginx-service-xxx:
    image: service-xxx-nginx:latest
    ports:
      - 80:80
    restart: always

  service-xxx:
    image: service-xxx:latest
    environment:
      - PORT=80
      - PG-HOST=192.168.0.101
      - PG-DATABASE=xxx
      - PG-USER=postgres
      - PG-PASSWORD=postgres
    restart: always
    command: web

...