개발/Docker

[Docker] 도커 컴포즈(Docker-compose) 작성하기

devhooney 2022. 12. 31. 01:04
728x90

도커 컴포즈 작성하기

 

 

728x90

 

 

1. docker compose 파일

- docker compose 파일은 도커 애플리케이션의 서비스, 네트워크, 볼륨 등의 설정을 yaml 형식으로 작성하는 파일

- 구성요소

  • service
  • network
  • volume
  • config
  • secret

 

- Service

service는 여러 컨테이너를 정의하는데 사용됨

위 그림처럼 작성 시 'frontend'와 'backend'는 각 컨테이너의 이름이되고 컨테이너를 정의한다.

 

- 컨테이너를 사용할 때 사용되는 키워드

  • image: 컨테이너의 이미지를 정의
  • build: 'image'를 활용하는 방식이 아닌 dockerfile의 경로를 지정해 빌드하여 사용하는 방법
  • dockerfile: 빌드할 dockerfile의 이름이 'Dockerfile'이 아닌 경우 이름을 지정하기 위해 사용
  • ports: 호스트와 컨테이너의 포트 바인딩 설정에 사용
  • volumes: 호스트의 지정된 경로로 컨테이너의 볼륨을 마운트 하도록 설정
  • container_name: 컨테이너 이름을 설정
  • command: 컨테이너가 실행된 후 컨테이너의 쉘에서 실행시킬 쉘 명령어 설정
  • environment: 환경변수를 설정
  • env_file: 'environment'와 동일한 기능을 수행, 이 키워드를 사용함으로 env파일을 이용해서 적용가능(환경변수가 너무 많을 경우)
  • depends_on: 다른 컨테이너와 의존관계를 설정(앱과 DB를 같이 가동할 때, 설정이 한 파일에 설정되어 있으면, DB 먼저 가동 후 앱 가동 시 사용하면 좋다.)
  • restart: 컨테이너의 재시작과 관련하여 설정

 

2.  docker compose 파일 실행

- 작성된 docker-compose.yml 파일을 실행하기 위해서 'docker-compose up' 사용

docker-compose up

 

- 추가 옵션

-f

docker-compose는 기본적으로 'docker-compose.yml'의 이름을 사용

다른 이름을 사용할 시

docker-compose -f custom_name.yml up

 

-d

백그라운드에서 docker-compose를 실행

docker-compose up -d

 

 

- 예시

docker-compose.yml 생성

services:
  test_db:
    image: mariadb:10.6 # mariadb 사용
    container_name: ghma_db_container # container 이름 설정
    restart: always
    environment:
      MARIADB_ROOT_PASSWORD: ghma123!@# # container 생성 후 root의 비밀번호를 저장한 파일을 설정함으로써 root 비밀번호를 설정
      MARIADB_DATABASE: ghma_db
      MARIADB_USER: ghma
      MARIADB_PASSWORD: ghma123!@#
    volumes:
      - ./master_db/data:/var/lib/mysql # 각종 log와 index 등의 volume이 저장되는 경로
      - ./master_db/config/:/etc/mysql/conf.d # ./master/config/my.cnf 설정을 참조
    ports:
      - "3307:3306" # 각 container의 포트를 수동으로 설정
    
  test_redis:
    image: redis:7.0.0
    restart: always
    ports:
      - "6380:6379"

 

docker-compose up 하면

 

이렇게 진행되고, 

 

 

설정된 값으로 컨테이너가 만들어졌다.

 

 

 

 

- 참고

https://www.youtube.com/watch?v=vwL0I5dhdyI&list=PLlTylS8uB2fDLJRJCXqUowsOViG-ZKnWy&index=9 

 

728x90