컨텍스트 : docker-compose는 Flask 앱을 호출하는 Gunicorn을 포함하여 여러 컨테이너를 시작합니다. 환경 파일 web/env.gunicorn
을 사용하여 Gunicorn 시작 구성을 저장하고 있습니다. 이 파일에는
GUNICORN_CMD_ARGS="--bind=127.0.0.1:8001 --workers=3"
문제는 GUNICORN_CMD_ARGS
파이프 라인 어딘가에서 올바르게 처리되지 않는다는 것입니다. 실행할 때 발생하는 오류 docker logs gunicorn
는
Error: '8001 --workers=3' is not a valid port number.
문제는 설정에서 내 가정이 잘못되어 환경 변수가 엉망이되는 것입니다. 환경 변수는 터미널에서 수동으로 실행될 때 허용됩니다. 도커 작성 파일은 다음과 같습니다.
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:
gunicorn을 사용하지 않지만 문서를 읽으면 env 변수에 대한 메모에서 = 로그 아웃되지 않습니다. 공백으로 시도해 보았지만 배수 인수를 올바르게 구문 분석하지 않는 것처럼 들립니다. 그래서 gunicorn의 버그 일 수 있습니다 (바인드 인수로 끝나는 인수 순서를 뒤집는 것이 해결 방법이거나 다음과 같은 분할 문제를 나타낼 수 있음) 노동자 매개 변수)
—
Tensibai
매개 변수의 순서를 변경하려고 시도했지만 도움이되지 않았습니다. 또한 명령 줄에서
—
Moritz
GUNICORN_CMD_ARGS
set 을 사용하여 Gunicorn을 시작하려고 시도 했으며 올바르게 수락했습니다 (작업자 수 및 주소 확인). 그래서 문제가 Docker 측에 있다고 가정합니다.
ERROR: build path /home/ben/devopsStackExchange/web either does not exist, is not accessible, or is not a valid URL.
. steps to reproduce paragraph
다른 사람들이 최소한 문제를 재현 할 수 있도록 도움을 줄 수 있도록 필요한 파일을 만들고 추가하십시오.
최소한 Gunicorn Dockerfile을 추가하십시오.
—
030
나는 Gunicorn Dockerfile을 사용하지 않습니다.
—
Moritz
command: gunicorn thymedata:app --bind=127.0.0.1:8001 --workers=3
통해로드 된 변수 env_file
는 허용되지 않으므로 버전을 고수합니다 . 발신 단말기에 이미 설정되어 있어야합니다.