[Docker] docker-compose 설치하기
필요한 이유
- 기존 docker 명령만으로 수많은 옵션을 붙여 컨테이너를 올리는 방식은 번거롭고, 불편하다
- yml 파일로 미리 정의해두고 한꺼번에 올리면
1) 여러 컨테이너를 올릴 수 있고
2) 실수를 줄일 수 있다.
영화 공유 사이트를 만든다고 하면
front-end / back-end / DB / 검색 등등으로 나눌 수 있는데, 이 각각을 서비스라고 한다.
이 모두를 합친것을 어플리케이션이라고 한다.
하나하나를 Docker run으로 띄울 수 있고, 옵션으로 하나하나 띄울 수 있는데,
너무 귀찮잖아요. 이걸 한번에 다루고 싶거든요.
도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/download/2.12.2/
docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
최신 버전은 아래 링크에서 확인하자
https://github.com/docker/compose/releases
Releases · docker/compose
Define and run multi-container applications with Docker - docker/compose
github.com
권한 설정해주기
$ sudo chmod +x /usr/local/bin/docker-compose
버전확인
$ docker compose version ($ docker-compose --version)
Docker-compose 사용해보기
docker-compose로 컨테이너 올리기
1. Dockerfile을 이용하여 이미지를 생성한다.
2. docker-compose.yml에 환경을 정의한다.
version: "3"
services:
db: # 서비스 명
image: mysql:8 # 사용할 이미지
container_name: test-mysql # 컨테이너명 설정
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: "dkagh1." # roor 계정 패스워드 설정
command: # 명령어
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
volumes: # 다렉토리 마운트 설정
- ./mysql/:/var/lib/mysql
UP
Docker Compose에서 가장 자주 사용되는 커맨드이다.
Docker Compose에 정의되어 있는 모든 서비스 컨테이너를 한 번에 생성하고 실행하기 위해서 사용한다.
Docker Compose는 기본적으로 커맨드가 실행하는 디렉토리에 있는
docker-compose.yml 또는 docker-compose.yaml를 설정 파일로 사용한다.
다른 이름이나 경로의 파일을 Docker Compose 설정 파일로 사용하고 싶다면 -f 옵션으로 명시를 해준다.
ex) $ docker-compose -f docker-compose-local.yml up
위 경로에서
(base) ✘ choichangho ~/Downloads/board/src/main/resources main docker compose up -d
[+] Running 1/1
⠿ Container mysql-container Started
docker compose up -d
명령어를 실행해준다. -d를 뒤에 붙이는 이유는 백그라운드로 실행하기 위함이다.
-d를 붙이지 않으면 현재 터미널에 컨테이너의 로그가 출력되고 Ctrl + C를 눌러서 탈출하는 순간 모두 정지되기 때문이다.
Down
docker-compose down 커맨드는 docker-compose up 커맨드와 정반대의 동작을 한다.
Docker Compose에 정의되어 있는 모든 서비스 컨테이너를 한 번에 정지시키고 삭제한다.
$ docker-compose down
Start
docker compose start 커맨드는 내려가 있는 있는 특정 서비스 컨테이너를 올리기 위해서 사용
대부분의 경우에는 docker compose up 커맨드를 사용해도 내려간 서비스를 알아서 올려주므로 무방하다.
docker compose start web
Stop
docker compose stop 커맨드는 docker compose start 커맨드와 정반대의 동작을 한다.
돌아기고 있는 특정 서비스 컨테이너를 정지시키기 위해서 사용한다.
docker compose stop web
ps
docker compose ps 커맨드는 Docker Compose에 정의되어 있는 모든 서비스 컨테이너 목록을 조회할 때 사용한다.
docker compose ps
logs
docker compose logs 커맨드는 서비스 컨테이너의 로그를 확인하고 싶을 때 사용하며,
보통 -f 옵션을 붙여서 실시간 로그를 확인한다.
docker compose logs
exec
docker compose exec 커맨드는 실행중인 서비스 컨테이너를 대상으로 어떤 명령어를 날릴 때 사용한다.
docker compose exec db psql postgres postgres
run
docker compose run 커맨드는 서비스 컨테이너의 특정 명령어를 일회성으로 실행할 때 사용한다.
docker compose run web env
config
docker compose config 커맨드는 docker compose 설정을 확인할 때 사용한다.
-f 옵션으로 여러 개의 설정 파일을 사용할 때, 최종적으로 어떻게 설정이 적용되는지 확인해볼때 유용하다.
docker compose config
REF.
https://www.daleseo.com/docker-compose/