Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

공유메모장

docker-compose 이해하기 본문

INFRA

docker-compose 이해하기

댕칠이 2024. 7. 24. 14:09

docker-compose는 여러 개의 컨테이너들을 관리하고 실행하기 위한 툴이며, 이를 이용해서 각각의 컨테이너의 실행을 정의할 수 있다.

즉, 내가 pull 받은 image를 어떤 설정들을 정의해서 컨테이너로 올리는데, 이를 docker compose가 한꺼번에 모아서 올려준다고 생각하면 된다. 물론 docker compose가 컨테이너를 올리기 위해서는 컨테이너 설정을 내가 직접 기술해주어야 한다. 

 

docker-compose 파일

- docker-compose.yml 으로 작성하며 실행할 수 있다. 

- 보통은 프로젝트 루트에 파일을 만들고 컨테이너들의 실행 설정을 기술한다. 

 version: '3' # 버전 지정 

services:
  db: # 해당 서비스의 이름 
    mysql: # mysql에 대한 설정 
      image: mysql:8.0 # 컨테이너 생성 시 사용하는 image 지정
      container_name: db-mysql
      restart: always # 컨테이너 다운 시 재시작 
      volumes: # 호스트와 컨테이너 간 데이터 공유 지정, 컨테이너가 삭제되거나 재시작 되어도 데이터를 유지한다. 
        - mysql-data:/var/lib/mysql # Docker에 의해 관리되는 'mysql-data'라는 명명된 볼륨을 컨테이너의 '/var/lib/mysql' 경로에 마운트"
      	# 볼륨의 실제 저장 위치는 Docker가 관리하며 일반적으로 호스트의 특정 시스템 경로(EX: /var/lib/docker/volumes/ ..)에 있고, 사용자가 직접 이 경로를 다루지는 않는다.
      environment:
        MYSQL_ROOT_PASSWORD: password
        MYSQL_DATABASE: db
	  ports:
        "3306:3306"
volumes:
  mysql-data: # mysql-data 로 명명된 볼륨은 여러 컨테이너에서 공유하고 참조 가능

 

docker-compose.yml을 작성하고, 

docker-compose up -d

을 ubuntu에서 실행하면 docker-compose.yml 에 기술되어 있는 컨테이너들이 일제히 docker에 올라간다. 

docker-compose down

을 하면 docker-compose로 올린 컨테이너를 모두 내릴 수 있다.