문제점
docker-compose.yml 파일에서 환경 변수를 제대로 로드하지 못하는 문제가 있었다.
확인해야할 점은 다음과 같았다.
1. .env.production 파일에 내용이 제대로 들어가 있는지 확인
2. env_file: - .env.production을 docker-compose.yml에 추가되었는지 확인
3. docker-compose.yml 파일과 .env.production 파일이 동일한 디렉토리에 위치해 있는지 확인.
4. docker-compose config 명령어를 사용하여 환경변수가 제대로 출력되는지 확인
모든것을 확인해본 결과 설정은 분명 맞게 한 것 같은데 docker-compose config 시 환경변수가 출력이 안된다.
폴더구조
project-root/
├── back/
│ ├── Dockerfile
│ ├── package.json
│ ├── package-lock.json
│ └── ... (other files)
├── front/
│ ├── Dockerfile
│ └── ... (other files)
├── docker-compose.prod.yml
└── .env.production
#docker-compose.yml
services:
back:
build: ./back
container_name: reactchat-back
ports:
- '3095:3095'
env_file:
- .env.production
environment:
DB_HOST: ${DB_HOST}
DB_USERNAME: ${DB_USERNAME}
DB_PASSWORD: ${DB_PASSWORD}
DB_DATABASE: ${DB_DATABASE}
CLIENT_DEV_URL: ${CLIENT_DEV_URL}
CLIENT_PROD_URL: ${CLIENT_PROD_URL}
COOKIE_SECRET: ${COOKIE_SECRET}
JWT_SECRET: ${JWT_SECRET}
DB_PORT: ${DB_PORT}
PORT: ${PORT}
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
AWS_REGION: ${AWS_REGION}
AWS_BUCKET_NAME: ${AWS_BUCKET_NAME}
depends_on:
- mysql
mysql:
image: mysql:8.0
restart: always
env_file:
- .env.production
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
ports:
- '3307:3306'
volumes:
- mysql_data:/var/lib/mysql
nginx:
image: nginx:alpine
ports:
- '443:443'
volumes:
- ./back/nginx/nginx.conf:/etc/nginx/nginx.conf
- /etc/letsencrypt:/etc/letsencrypt
depends_on:
- back
front:
build: ./front
container_name: reactchat-front
image: kingheedo/reactchat-front:latest
ports:
- '443:443'
volumes:
- /etc/letsencrypt:/etc/letsencrypt # SSL 인증서 공유
- /var/lib/letsencrypt:/var/lib/letsencrypt # SSL 인증서 저장소 공유
volumes:
mysql_data:
driver: local # 볼륨 드라이버 설정
해결방법
docker-compose -f docker-compose.prod.yml --env-file .env.production config
docker-compose로 실행시에 -f 를 통해 특정 파일 명의 docker-compose.yml을 선택
--env-file을 통해 특정 파일명의 .env파일을 선택하여 실행하는 방법이 있다.
이런 식으로 실행하면 정상적으로 환경변수가 출력이 되었다.
env_file로 실행 했을 때 왜 안되는지는 더 찾아봐야겠다.
'Docker' 카테고리의 다른 글
EC2인스턴스에서 Docker로 실행 중인 MySQL 데이터베이스와 MySQL Workbench 연동하는 법 (0) | 2024.07.07 |
---|---|
Docker에러 - mysqld: Can't open file: 'mysql.ibd' (errno: 0 - ) (0) | 2024.07.07 |
도커 명령어 모음 (0) | 2024.06.28 |