Konteks: komposisi buruh pelabuhan untuk memulai beberapa wadah, termasuk Gunicorn yang memanggil aplikasi Flask. Saya menggunakan file lingkungan web/env.gunicorn
untuk menyimpan konfigurasi startup Gunicorn saya. File ini berisi
GUNICORN_CMD_ARGS="--bind=127.0.0.1:8001 --workers=3"
Masalahnya adalah bahwa GUNICORN_CMD_ARGS
tidak diproses dengan benar di suatu tempat di dalam pipa. Kesalahan yang saya dapatkan saat menjalankan docker logs gunicorn
adalah
Error: '8001 --workers=3' is not a valid port number.
Pertanyaannya adalah, di mana dalam pengaturan saya asumsi saya salah, sehingga menyebabkan variabel lingkungan menjadi hancur? Variabel lingkungan diterima ketika dijalankan secara manual di terminal. File penulisan docker tampak sebagai berikut
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
sumber
sumber
GUNICORN_CMD_ARGS
set, dan itu menerimanya dengan benar (# pekerja dan alamat diperiksa). Itu sebabnya saya kira masalahnya ada di pihak Docker.ERROR: build path /home/ben/devopsStackExchange/web either does not exist, is not accessible, or is not a valid URL.
. Harap buatsteps to reproduce paragraph
dan tambahkan file yang diperlukan agar orang lain dapat membantu Anda dengan setidaknya mengizinkan mereka mereproduksi masalah.command: gunicorn thymedata:app --bind=127.0.0.1:8001 --workers=3
versi, karena variabel yang dimuat melaluienv_file
tidak diterima. Mereka harus sudah diatur di terminal panggilan.Jawaban:
Setelah membaca bab perintah dan menemukan sampel ini , sepertinya kebiasaan
GUNICORN_CMD_ARGS
dapat dihilangkan dengan hanya meneruskan argumen secara langsung:Jika seseorang benar-benar ingin menggunakan variabel maka itu bisa dilakukan sebagai berikut:
.env
sumber
env_file
. Karena saya tidak menetapkan rahasia apa pun, itu solusi yang dapat diterimaSaya memiliki masalah yang sama dan ini bekerja untuk saya tanpa merasa seperti hack ...
docker-compose.yml :
Catatan: tambahkan env GUNICORN_CMD_ARGS tanpa tanda kutip
Dockerfile :
Catatan: jalankan aplikasi CMD gunicorn: aplikasi tanpa opsi lewat array atau kutipan
sumber