✅ Docker Compose
Docker Compose
를 사용한다 -> 긴 명령어를 간소화 시키기 때문에 ✅ Docker Compose
사용 이유
EX) 이전에 MySQL 이미지를 컨테이너에 실행시킬 때 아래와 같이 복잡한 명령어를 실행함
$ docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql -d my-mysql
하지만 Docker Compose
를 사용하면 위와 같은 컨테이너를 실행시킬 때마다
복잡한 명령어를 입력하지 않고, compose.yml
파일안에 아래와 같은 코드를 적고 (위 명령어 대상임) 단순히 docker compose up
명령어만 실행시키면 된다
✅ Docker Compose
사용 예제
compose.yml
을 만들어서 안에 다음과 같이 명령어를 입력한다services: # Docker Compose에서 하나의 컨테이너를 서비스라고 부름
my-mysql: # 서비스에 이름을 붙이는 기능 (이름은 아무거나 가능)
image: mysql # 컨테이너 실행시 어떤 이미지 사용할 지 정의하는 명령어로 CLI(커맨드라인에서는) $ docker run [이미지명]와 동일한 역할
container_name: mysql-container # 컨테이너 명 생성(CLI(커맨드라인에서는) --name web-server 역할과 동일
environment:
MYSQL_ROOT_PASSWORD: password123
ports:
- 3306:3306 # 포트 매핑은 어떻게 할 지를 설정하는 옵션 CLI에서-p 3306:3306 역할과 동일
volumes:
- /Users/jaeseong/Documents/Develop/docker-mysql/mysql_data:/var/lib/mysql
restart: unless-stopped
compose 파일 실행시키기
dcocker compose up
: 포그라운드에서 실행
docker compose up -d
: 백그라운드에서 실행
compose 실행 현황 보기
docker compose ps
💡 docker ps
와 docker compose ps
차이가 무엇일까?
docker ps
: 실행되고 있는 컨테이너를 모두 조회
docker compose ps
: 위 compose.yml
에서 정의된 컨테이너 중에서 실행된 컨테이너만 조회
docker compose ps -a
: 위 compose.yml
에서 정의된 컨테이너 중 모든(중지,실행,정지) 컨테이너 조회
docker compose down
추가로 docker compose
명령어를 더 설명하겠다
✅ Docker Compose 로그 확인
docker compose log
✅ 컨테이너를 실행하기 전에 이미지 재빌드
compose.yml
에서 정의한 이미지 파일에서 코드가 변경될 경우, 이미지를 다시 빌드한 후--build
옵션을 추가해서 사용docker compose up --build
: 포그라운드에서 실행docker compose up --build -d
: 백그라운드에서 실행💡 docker compose up
와 docker compose up --build
의 차이
docker compose up
: 이미 빌드된 이미지가 있으면 그것을 사용해서 컨테이너 실행
docker compose up --build
: 이미지가 있어도 무조건 새로 빌드하고 실행
✅ 이미지 다운받기 / 업데이트하기
compose.yml
에서 정의된 이미지를 다운 받거나 업데이트 한다docker compose pull