Docker-compose
란 하나의 서버에서 여러개의 컨테이너를 하나의 서비스처럼 컨테이너 묶음으로 관리할 수 있는 작업 환경을 제공하는 툴이다. Docker-compose
를 사용하지 않으면 컨테이너를 각각 하나씩 생성해야 하므로 비효율적이다. ➡️ YAML 파일
로 여러 개의 docker 내부 속성을 설정하고 실행 시켜 docker를 일괄적으로 한 번에 실행시키는 것과 같다.
- 작업하던 폴더 안에
DockerfileMongo
를 만든다. (Dockerfile
은 전 글과 동일하게 작성 )FROM mongo:5
➡️
Dockerfile
과DockerfileMongo
를 통해 각각의 가상 컴퓨터를 생성 . 이때 우리는 각자 다른 컴퓨터들을 연결을 위해 포트포워딩 을 해줘야 하는데 docker로 만들어진 각각의 컴퓨터들을 포트포워딩을 위해 그룹핑 하는 것이Docker-compsoe
이다.
- Express와 MongoDB 서버를 한 번에 실행시키기 위해
yaml 파일
을 정의해야 한다.version: '3.7' # 컴퓨터들 services: # 컴퓨터이름 my-backend: build: context: . dockerfile: Dockerfile ports: - 4000:4000 # 컴퓨터이름 my-database: build: context: . dockerfile: Dockerfilemongo ports: - 27017:27017
yaml 파일
은 version, services, volumes, networks 를 정의하는데, 먼저services
만 정의해 보면services
정의는 각각의 컨테이너에 적용되는 configuration을 포함하고 있다.
context
: Dockerfile을 포함하는 디렉토리 경로 또는 git repo urldockerfile
: Dockerfile을 대체하는 파일 지정ports
: Host OS와 컨테이너의 포트를 바인딩 시켜준다.
여기까지 한 후, docker-compose build
를 입력해 image를 build하고 docker-compose up
을 입력해 컨테이너를 실행시켜 준다.
🚨🚨 만약 DockerfileMongo의 내용이 한 줄이어서 지우고 싶다면
yaml 파일
에서 my-database의 build 부분을 지우고 image를 정의해주면 된다.# 컴퓨터이름 my-database: image: mongo:5 ports: - 27017:27017
➡️yaml 파일
에 지정한 포트번호 27017로 연결이 잘 되는 걸 확인할 수 있다.