Docker-compose

Jae·2023년 8월 30일
0

백엔드 - Node.js

목록 보기
8/10

Docker compose

  • Docker-compose란 하나의 서버에서 여러개의 컨테이너를 하나의 서비스처럼 컨테이너 묶음으로 관리할 수 있는 작업 환경을 제공하는 툴이다.
  • Docker-compose를 사용하지 않으면 컨테이너를 각각 하나씩 생성해야 하므로 비효율적이다. ➡️ YAML 파일 로 여러 개의 docker 내부 속성을 설정하고 실행 시켜 docker를 일괄적으로 한 번에 실행시키는 것과 같다.

Docker compose를 활용한 MongoDB 연결

  • 작업하던 폴더 안에 DockerfileMongo를 만든다. (Dockerfile 은 전 글과 동일하게 작성 )
FROM mongo:5

➡️ DockerfileDockerfileMongo를 통해 각각의 가상 컴퓨터를 생성 . 이때 우리는 각자 다른 컴퓨터들을 연결을 위해 포트포워딩 을 해줘야 하는데 docker로 만들어진 각각의 컴퓨터들을 포트포워딩을 위해 그룹핑 하는 것이 Docker-compsoe이다.

  • ExpressMongoDB 서버를 한 번에 실행시키기 위해 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 url
  • dockerfile : 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

MongoDB Compass로 확인


➡️yaml 파일에 지정한 포트번호 27017로 연결이 잘 되는 걸 확인할 수 있다.


profile
Back-end Developer

0개의 댓글