Dev
Docker compose - .env 활용하기
foxlee
2022. 2. 8. 21:11
* 프로젝트 개발 환경에 따른 변수를 .env에서 선언하고 Docker compose 안에서 참조하거나 각 서비스(API, Web Server 등)에 변수를 전달해서 환경 변수로 활용하자.
./.env
FLASK=project_api
FLASK_PORT=11234
PROXY=project_proxy
PROXY_PORT=11235
REDIS=project_redis
REDIS_PORT=6379
REDIS_PASSWORD=password
# API 에서 전달될 환경 변수
DB_URL='URL_0101'
./docker-compose.yml
version: "3"
services:
flask:
container_name: "${FLASK}"
restart: always
build: ./flask
volumes:
- ./flask/logs:/usr/src/flask_app/logs
expose:
- "${FLASK_PORT}"
env_file:
- ./.env # 다른 변수들이 컨테이너 안 os.getenv("DB_URL") 전달됨
command: gunicorn -c ./gunicorn.conf.py "app:create_app('prod')"
depends_on:
- redis # 컨테이너 이름이 아닌 여기서 서비스로 지정한 이름(여기는 nginx 또는 redis)
nginx:
container_name: "${PROXY}"
restart: always
build: ./nginx
volumes:
- ./nginx/log:/var/log/nginx
ports:
- "${PROXY_PORT}:80"
depends_on:
- flask
redis:
image: redis:4.0.11-alpine
container_name: "${REDIS}"
command: "redis-server --requirepass ${REDIS_PASSWORD}"
ports:
- "${REDIS_PORT}"