Build Up

- 도커 컴포즈는 여러개의 컨테이너를 하나로 묶어 띄우는 Docker의 기능이다.
What
환경변수
- 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임이다.
- 도커에서 사용하는 환경변수, 프로그래밍 언어인 자바가 사용하는 환경변수 등 이러한 프로세스들이 내부적으로 사용할 수 있는 변수를 환경 변수라고 한다.
How
docker에 환경변수를 사용하는 방법은 총 4가지가 있다.
- Compose 파일에 직접 입력하기

- 쉘 환경변수로 등록하기


- 환경변수 파일로 구성하기
- 하나의 .env 파일로 구성하기
- 여러개의 파일로 구성하기
- 각 서비스 마다 다른 환경변수 파일 반영하기
- 같은 변수명이 들어있는 .env 파일들에서 마지막에 삽입된 변수가 값이 되어 적용된다.
version: '3.9' services: mysql: image: mysql:8 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
.env 파일은 별다른 설정없에 Compose 파일로 바로 반영된다.
.env file
MYSQL_ROOT_PASSWORD=password
.env.dev
와 .env.prod
가 있다고 하자$ cat ./config/.env.dev MYSQL_ROOT_PASSWORD=passwd_dev $ cat ./config/.env.prod MYSQL_ROOT_PASSWORD=passwd_prod
env 파일을
.
env.dev
로 사용하라 라는 뜻으로 compose를 띄운다.docker compose --env-file ./config/.env.dev config
version: '3.9' services: mysql: env_file: # 파일이 여러 개라면 리스트 형태로 삽입한다. - a.env - b.env image: mysql:8 restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
유의할 점
- Dockerfile에 환경변수 직접 삽입하기
FROM mysql:8 ENV MYSQL_ROOT_PASSWORD password
환경변수 우선순위
- Compose 파일에 직접 입력한 값
- 쉘 환경변수로 등록한 값
- 환경변수 파일로 입력된 값(
.env
등)
- Dockerfile을 통해 삽입된 값