공유메모장
docker-compose 이해하기 본문
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로 올린 컨테이너를 모두 내릴 수 있다.
'INFRA' 카테고리의 다른 글
mysql-exporter (3) | 2024.08.07 |
---|---|
jenkins container (DinD) 에서 spring boot project가 배포 되지 않을 때 (2) | 2024.07.27 |
[issue] nginx 활성화 시 jenkins 접속 url이 https 로 자동 파싱되는 경우 (1) | 2024.07.24 |
[Linux] docker 명령어 (0) | 2024.07.23 |
[Linux]nginx 관련 명령어 (0) | 2024.07.23 |