.env 파일 구조docker-compose는 자동으로 .env 파일을 읽어서 환경 변수로 사용합니다.
환경을 나누기 위해 보통 이렇게 관리합니다.
.env # 공통 환경 변수
.env.development # 개발 전용 환경 변수
.env.production # 운영 전용 환경 변수
.env (모든 환경에서 사용)# 공통 설정
JWT_SECRET=docker_secret
JWT_REFRESH_SECRET=docker_secret2
MONGO_DB_NAME=my-todo
✅ 공통 값은 모든 환경에서 동일
.env.development# 개발 환경 전용
CLIENT_URL=http://localhost:5173
MONGODB_URI=mongodb://my-mongo-db:27017/my-todo
PORT=3001
.env.production# 운영 환경 전용
CLIENT_URL=https://todo.example.com
MONGODB_URI=mongodb://my-mongo-db:27017/my-todo
PORT=3001
공통 설정에서 환경 변수 파일을 명시하지 않고, 서비스에서 ${변수명}으로 참조합니다.
version: "3.9"
services:
my-mongo-db:
image: mongo
restart: always
volumes:
- mongo-data:/data/db
networks:
- my-net
my-todo-express:
build:
context: ./my-todo-express
dockerfile: Dockerfile
networks:
- my-net
depends_on:
- my-mongo-db
environment:
- PORT=${PORT}
- CLIENT_URL=${CLIENT_URL}
- MONGODB_URI=${MONGODB_URI}
- JWT_SECRET=${JWT_SECRET}
- JWT_REFRESH_SECRET=${JWT_REFRESH_SECRET}
my-todo-react:
build:
context: ./my-todo-react
dockerfile: Dockerfile
networks:
- my-net
depends_on:
- my-todo-express
networks:
my-net:
volumes:
mongo-data:
✅ 환경 변수는 .env 파일에서 자동으로 로드됨