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
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
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 stop
- docker compose up으로 생성된 컨테이너 삭제
docker-compose down