docker-compose
매번 docker run... 은 그만! 편하게 docker로 application을 띄우게 해주는 도구인 docker-compose를 살펴보자.
docker compose : 여러 컨테이너를 편리하게 실행하기 위해서 만들어둔 도구이다. YAML 파일을 통해 container를 실행하는데 필요한 옵션을 정의할 수 있다.(더 편리하게 실행하는 방법 관리, 버전 관리 등등)
※ YAML이란 YAML Ain't Markup Language 으로, 데이터를 저장하는 파일 포맷입니다. 비슷한 형식으로 XML과 JSON이 존재하지만, 사람이 읽기가 더 편하다는 장점이 있습니다.
docker-compose로 application 실행하기
먼저 프로젝트 폴더에 docker-compose.yaml 파일을 생성한다.
version: "3.9"
services:
# 여기 아래에는 container들을 어떻게 실행할 것인지 적는다. container들의 이름으로 만들어 주면 된다.
flask:
build:
context: .
ports:
- 5000:5000
yaml 파일 안에 위와 같이 입력한 후
터미널에서 'docker-compose up' 을 입력하면 (물론 프로젝트 폴더로 이동 한 후 실행)
yaml에 입력한 대로 docker가 동작한다.
입력한 포트로 접속해서 테스트 성공여부를 확인 할 수 있다.
또한 docker compose는 기본적으로
이와같이 네트워크를 만들어서 실행 되므로 network 를 생성하는 작업을 건너뛸 수 있다.
docker-compose로 DB가 있는 application 연결하기
현재상태로는 db가 연결되어있지 않기 때문에 기대하는 동작이 나오지 않을 수 있다.
docker-compose.yaml에 db를 추가하자.
version: "3.9"
services:
flask:
build:
context: .
ports:
- 5000:5000
mongo:
image: mongo
ports:
- 27017:27017
그 후 위와같이 docker-compose up -d 를 하면 flask와 mongo가 생성되는걸 볼 수 있다. (-d는 docker run과 마찬가지로 백그라운드에서 실행하는 옵션)
docker ps로 두개의 컨테이너가 실행 되는걸 확인했다.
그 후 로컬호스트에서 db가 필요한 작업을 수행하면 기대한 동작이 잘 실행된다.
docker-compose를 이용하여 volume으로 유지되는 appilcation 실행하기
docker-compose에서는 bind mount, named volume을 모두 지원한다.
docker-compose.yaml을 다음과 같이 수정하자.
version: "3.9"
services:
# 여기 아래에는 container들을 어떻게 실행할 것인지 적는다. container들의 이름으로 만들어 주면 된다.
flask:
build:
context: .
volumes:
- ./templates:/templates
ports:
- 5000:5000
mongo:
image: mongo
volumes:
- mongo:/data/db
volumes:
mongo:
이 후 docker-compose up -d 를 하면 볼륨이 유지되는 어플리케이션을 실행할 수 있다.
'Docker' 카테고리의 다른 글
9. Docker-compose에서 환경 변수 설정하기(.env파일) (node.js) (0) | 2022.03.22 |
---|---|
7. Docker 리소스 (0) | 2022.03.17 |
6. Docker network (0) | 2022.03.17 |
5. Docker container 데이터 유지 (0) | 2022.03.17 |
4. docker 기초(3) 공유하기 (0) | 2022.03.17 |
댓글