1. Docker-compose란?
- 여러 컨테이너를 편리하게 실행하기 위해서 만들어진 도구
- YAML 파일을 통해 컨테이너를 실행하는데 필요한 옵션(실행 방법, 버전 관리 등) 정의
2. Docker-compose 사용을 위해 필요한 것
1) Docker-compose.YAML 파일 👈🏻 직접 만들어야함
- 큰 틀에서 구성요소는 services, network, volume, config, secret(version은 deprecated 되어 설정하지 않아도 됨)
2) Docker-compose 실행 파일 👈🏻 mac/window 용 도커에 기본으로 되어있음
*YAML(Ain't Markup Language): 데이터를 저장하는 파일 포맷으로 비슷한 형식으로 XML과 JSON이 있지만 사람이 읽기 더 편하다는 장점이 있는 마크업 언어
3. Docker-compose 사용 하기
1) Docker-compose.YAML 파일 생성
version: "3.9" // docker-compose 버전(deprecated되어 설정 안해도 됨)
services:
flask: // 이미지명
build: // 이미지를 빌드하여 사용
context: . // 이미지가 빌드되는 위치는 docker-compose 파일이 있는 위치
ports:
- "5000:5000" // 포트 연결
services: 여러 컨테이너를 정의하는데 사용 frontend, backend는 각 컨테이너를 정의하게 되며, 각 컨테이너의 이름이 됨
컨테이너 설정 시 사용되는 키워드
image | 컨테이너 이미지 정의 |
build | 위 이미지를 활용하는 방식이 아닌 dockerfile의 경로를 지정해 빌드하여 사용하는 방법 |
dockerfile | 빌드할 dockerfile의 이름이 Dockerfile이 아닌 경우 이름 지정을 위해 사용 |
ports | 호스트와 컨테이너 포트 바인딩 설정에 사용 |
expose | 컨테이너 간 통신을 위한 포트 |
volumes | 호스트의 지정된 경로로 컨테이너의 볼륨을 마운트 하도록 설정 |
container_name | 컨테이너명 설정 |
command | 컨테이너가 실행된 후 컨테이너의 쉘에서 실행시킬 쉘 명령어 설정 |
environment | 환경변수 설정 |
env_file | 환경변수 설정, 이 키워드는 environment와 다르게 env 파일을 이용해서 적용할 수 있음 |
depends_on | 다른 컨테이너와 의존관계 설정, 먼저 실행될 서비스를 적음 |
restart | 컨테이너 재시작 관련 설정 |
2) docker-compose로 컨테이너 실행
// docker-compose로 컨테이너 실행
docker-compose up -d
// docker-compose로 컨테이너 삭제
docker-compose down
어플리케이션을 이용했더니 에러 발생, db연결 정보가 없기 때문
ctrl + c: docker-compose 멈추기
3) Docker-compose.YAML 파일 수정
// ..생략
mongo:
image: mongo
ports:
- 27017:27017
4) 확인하기 - 저장이 잘 됨
5) volume이 유지되는 어플리케이션 설정
Docker-compose.YAML 파일 수정
version: "3.9"
services:
flask:
build:
context: .
volumes:
- ./templates:/templates
ports:
- "5000:5000"
mongo:
image: mongo
volumes:
- mongo:/data/db
ports:
- 27017:27017
volumes:
mongo:
도커 volume 확인
'Docker' 카테고리의 다른 글
도커(docker) 사용하지 않는 docker 리소스 정리하기 (0) | 2022.12.16 |
---|---|
도커(docker) 컨테이너 리소스 사용량 제한하기 (0) | 2022.12.16 |
[Docker] 여러개의 컨테이너 연결하기 - Docker network (0) | 2022.12.15 |
도커(Docker) 컨테이너에서 생성된 데이터 유지하기- named volume (0) | 2022.12.15 |
[Docker] 내가 만든 애플리케이션 도커로 실행하기, 이미지 공유하기 (0) | 2022.12.15 |