개발 공부/Docker
docker-compose.yml 환경변수 설정
게으른 제이
2023. 3. 15. 03:00
환경변수 설정법
.env 파일에 환경변수를 작성하면 별다른 설정 없이도 간단히 docker-compose.yml 에서 접근 할 수 있다.
docker-compose.yml
shop-api-db:
image: postgres
restart: always
container_name: shop-api-db
environment:
- POSTGRES_USER=${POSTGRES_USER}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=${POSTGRES_DB}
ports:
- ${POSTGRES_PORT}:${POSTGRES_PORT}
networks:
- shop-api-networks
NGINX 환경변수 바인딩
아래 예시처럼 environment 옵션에 환경변수의 이름과 값을 직접 바인딩
docker-compose.yml
shop-nginx:
image: nginx:stable-alpine
container_name: shop-nginx
volumes:
- ./nginx/templates:/etc/nginx/templates
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
- ./cert/cert.pem:/etc/nginx/cert/cert.pem
- ./cert/key.pem:/etc/nginx/cert/key.pem
environment:
- NGINX_PORT=${NGINX_PORT}
- SERVER_PORT=${SERVER_PORT}
- API_NAME=${API_NAME}
ports:
- ${NGINX_PORT}:${NGINX_PORT}
depends_on:
- shop-api
networks:
- shop-api-networks
그럼 nginx 디렉토리에서 환경변수를 전달받아 아래 예시처럼 사용 가능하다.
default.conf.template
server {
listen ${NGINX_PORT} ssl;
listen [::]:${NGINX_PORT} ssl;
ssl_certificate cert/cert.pem;
ssl_certificate_key cert/key.pem;
server_name ${API_NAME};
charset utf-8;
client_max_body_size 50M;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-Proto $scheme;
# proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://shop-api:${SERVER_PORT};
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}