docker compose 이해하기

test·2021년 12월 29일

docker

목록 보기
5/6
post-thumbnail

docker compose ?

ch1. docker compose 이해하기

  • docker compose 란..? 컨테이너들을 연결해 관리하는 도구
  • 예를들어 앱을 만들기 위해서 server, app(client), database로 이루어져 있다. 각각 docker container로 작성 후 연결해야 하는데 이때 보다 쉽게 연결하고 관리하는 도구

ch2. docker-compose.yml ?

  • 우선 docker compose를 설치해야한다. docker compose 설치 방법
  • docker compose는 yml 형식의 파일에 세팅된다.
  • docker-compose.yml 구성
version: "3"
services:
  database:
    image: mysql
    ports:
      - "3306:3306"
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=1234
    volumes:
      - ./db_backup:/var/lib/mysql
    restart: always

ch3. docker-compose.yml 세부 항목

1. version

  • 말 그대로 docker compose 파일 포맷 버전

2. services

  • 원하는 컨테이너 서비스 설정
  • ex> server, app, database 서버 구축
services:
  server:
services:
  app:
services:
  database:

3. image

  • 서비스의 컨테이너에 필요한 이미지 설정
  • ex> database 서버 mysql 이미지로 구축
services:
  database:
    image: mysql

4. ports

  • 컨테이너 연결 port
  • 왼쪽이 외부포트, 오른쪽 컨테이너 내부포트
services:
  database:
    image: mysql
    ports: "80:8080"

5. environment

  • 이미지 실행 시 환경변수 설정
services:
  database:
    image: mysql
    ports: "80:8080"
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=1234
  • 참고로 volumes 대신 env_file 설정도 가능
services:
  database:
    image: mysql
    ports: "80:8080"
    env_file:
      - ./db_set.env
  • db_set.env 파일 내부 포맷
MYSQL_DATABASE=testdb
MYSQL_ROOT_PASSWORD=1234

6. volumes

  • 컨테이너와 호스트 서버 디렉토리 연결. 여러개 설정 가능
  • : 기준 왼쪽이 호스트 서버, 오른쪽이 컨테이너 서버
services:
  database:
    image: mysql
    ports: "80:8080"
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=1234
    volumes:
      - ./db_backup:/var/lib/mysql

7. restart

  • 서버가 죽으면 즉시 restart
services:
  database:
    image: mysql
    ports: "80:8080"
    environment:
      - MYSQL_DATABASE=testdb
      - MYSQL_ROOT_PASSWORD=1234
    volumes:
      - ./db_backup:/var/lib/mysql
    restart: always

ch4. docker compose 명령어

  • docker compose 실행
  • {option -d} : 백그라운드로 실행
  • {option --build} : 이미지 재빌드
docker-compose up {option}
  • docker compose 중지
docker-compose stop
  • docker compose up으로 생성된 컨테이너 삭제
docker-compose down
profile
bedev

0개의 댓글