1. 도커 컴포즈란?

  • 도커 명령어에 대한 불편함을 해소하기 위해 만든 프로그램
  • 도커 컴포즈 파일(yml)에 작성된 대로 명령 실행하고 컨테이너 생성
  • 여러 컨테이너를 실행하고 연결시키는 것을 가능하게 함
  • docker-compose.yml이라는 YAML파일을 작성하여 실행

2. 도커 컴포즈 설치

# 도커 컴포즈 설치
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 실행 권한 주기
sudo chmod +x /usr/local/bin/docker-compose
# 도커 컴포즈 버전 확인
docker-compose --version

3. 도커 컴포즈 작성

# 임의의 폴더에서 도커 컴포즈 파일 작성 예시
# docker-compose.yml
version: '2'
services:
  db:
    image: mariadb:10.5
    volumes:
      - ./mysql:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: wordpress
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: wordpress
  wordpress:
    image: wordpress:latest
    volumes:
      - ./wp:/var/www/html
    ports:
      - "8000:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress
# 커맨드 라인에서 해당 폴더로 이동해 명령 입력

# 컨테이너 실행
docker-compose up

# 컨테이너 중지
docker-compose down

4. 도커 컴포즈 문법

# version
docker-compose.yml 파일의 명세 버전
예) version: '3'

# services
실행할 컨테이너 정의
예) services:
      django:
      . . . 
# image
컨테이너에 사용할 이미지
예) image: mariadb:10.5

# ports
컨테이너와 연결할 포트 ( [호스트 포트]:[컨테이너 포트])
예) ports: "8000:8000"

# environment
컨테이너에서 사용할 환경변수들( [환경변수 이름]:[값])
예) MYSQL_ROOT_PASSWORD=somewordpress: "3"

# volumes
마운트하려는 디렉토리들 ([호스트 디렉토리]:[컨테이너 디렉토리])
예) ./wp:/var/www/html

# restart
재시작 정책
예) restart: "no", restart: always

# build
이미지를 자체 빌드 후 사용
예) build:
      context: .
      dockerfile: ./compose/django/Dockerfile-dev

5. 도커 컴포즈 명령어

# up
컨테이너 실행
예) docker-compose up

# down
컨테이너 중지
예) docker-compose down  

# start
멈춘 컨테이너 재개
예) docker-compose start

# restart
컨테이너 재시작
예) docker-compose restart

# stop
컨테이너 멈춤
예) docker-compose stop

# logs
컨테이너의 로그
예) docker-compose logs
    docker-compose logs -f

# ps
컨테이너 목록
docker-compose ps

# exec
실행 중인 컨테이너 명령어 실행
docker-compose exec [컨테이너 이름] [명령어]

# build
컨테이너 build 부분에 정의된 내용대로 빌드
예) dcoker-compose build

Tags:

Categories:

Updated: