IT 지식

[Docker] docker-compose 설치하기

Gilbert_ 2022. 12. 1. 22:57

필요한 이유 

  • 기존 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/