Контекст: docker-compose для запуска нескольких контейнеров, включая Gunicorn, который вызывает приложение Flask. Я использую файл окружения web/env.gunicorn
для хранения моей конфигурации запуска Gunicorn. Этот файл содержит
GUNICORN_CMD_ARGS="--bind=127.0.0.1:8001 --workers=3"
Проблема в том, что GUNICORN_CMD_ARGS
не обрабатывается правильно где-то в конвейере. Ошибка , что я получаю при запуске docker logs gunicorn
IS
Error: '8001 --workers=3' is not a valid port number.
Вопрос в том, где в моих настройках мои предположения неверны, что приводит к искажению переменной среды? Переменная среды принимается при запуске вручную в терминале. Составной файл Docker выглядит следующим образом
version: "3"
services:
# nginx:
# image: nginx:latest
# ports:
# - "80:80"
# volumes:
# - ./nginx:/etc/nginx/conf.d
# depends_on:
# - web
web:
build: ./web
container_name: gunicorn
ports:
- "8001:8001"
environment:
- APP_CONFIG_FILE=../config/development.py
env_file:
- 'web/env.gunicorn'
networks:
- backend
command: gunicorn thymedata:app
depends_on:
- influxdb
- grafana
influxdb:
image: influxdb:latest
container_name: influxdb
ports:
- "8086:8086"
env_file:
- 'influxdb/env.influxdb'
- 'influxdb/secrets.influxdb'
networks:
- backend
volumes:
- influxdb-data:/var/lib/influxdb
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
env_file:
- 'grafana/env.grafana'
- 'grafana/secrets.grafana'
networks:
- backend
volumes:
- grafana-data:/var/lib/grafana
depends_on:
- influxdb
networks:
backend:
volumes:
influxdb-data:
grafana-data:
docker
docker-compose
Moritz
источник
источник
GUNICORN_CMD_ARGS
set, и он принял его правильно (количество рабочих и адрес проверены). Вот почему я полагаю, что проблема на стороне Докера.ERROR: build path /home/ben/devopsStackExchange/web either does not exist, is not accessible, or is not a valid URL.
, Пожалуйста, создайтеsteps to reproduce paragraph
и добавьте необходимые файлы, чтобы другие люди могли помочь вам, по крайней мере, позволить им воспроизвести проблему.command: gunicorn thymedata:app --bind=127.0.0.1:8001 --workers=3
версии, так как переменные, загруженные черезenv_file
, не принимаются. Они уже должны быть установлены в вызывающем терминале.Ответы:
После прочтения главы, посвященной командам, и поиска этого примера , похоже, что пользовательский
GUNICORN_CMD_ARGS
интерфейс можно опустить, просто передав аргументы напрямую:Если кто-то действительно хочет использовать переменные, это можно сделать следующим образом:
.env
источник
env_file
. Поскольку я неУ меня была похожая проблема, и это сработало для меня без чувства хака ...
docker-compose.yml :
Примечание: добавьте env GUNICORN_CMD_ARGS без кавычек
Dockerfile :
Примечание. Запустите приложение CMD gunicorn: приложение без передачи параметров через массив или кавычки.
источник