개발자로 후회없는 삶 살기

도커 PART.docker-compose 본문

[Infra]/[도커]

도커 PART.docker-compose

몽이장쥰 2023. 1. 29. 19:51

서론

도커 컴포즈에 대해 알아보고 사용해 보겠습니다.

 

본론

- 도커 컴포즈란?

컨테이너를 실행하는데 커맨드에서 하면 옵션이 많아지면 어렵고 관리하기가 간단하지 않습니다. 그리고 매번 명령어를 치는 것이 귀찮습니다. 따라서 도커 컴포즈라는 파일을 만들고 실행시키면 파일에 적혀져 있는 대로 명령어가 실행됩니다. 실습으로 몽고 DB 이미지를 컴포즈로 불러와보겠습니다.

 

- docker-compose.yaml 파일

 version: "3.7" # 컴포즈 버전으로 버전별로 파일에 적히는 내용이 달라짐

 services: # 몽고 DB, 몽고 익스프레스 서비스 총 2개를 만들겠다.
   mongodb:
     image: mongo # 실행할 이미지의 도커 허브 레포지토리 명
     networks: # 브릿지
       - mongo_net
     ports: # p 옵션
       - 27017:27017
     environment: # e 옵션
       - MONGO_INITDB_ROOT_USERNAME=admin
       - MONGO_INITDB_ROOT_PASSWORD=password

   mongo-express:
     image: mongo-express
     networks:
       - mongo_net
     ports:
       - 8081:8081
     environment:
       - ME_CONFIG_MONGODB_ADMINUSERNAME=admin
       - ME_CONFIG_MONGODB_ADMINPASSWORD=password
       - ME_CONFIG_MONGODB_SERVER=mongodb
     depends_on: # 몽고 DB에 의존한다.
       - mongodb

 networks: # docker network create 
   mongo_net:
     driver: bridge

 

 

-> 옵션

1) environment : 컨테이너를 만들 때 환경변수 설정을 합니다. ex) 몽고db 이미지를 만들 때 컨테이너로 실행이 될 시점에 environment에 넣어놓은 설정값을 만들어 놓을 수 있습니다. 여기서는 몽고 db 이미지를 컨테이너로 실행시킬 때 아이디 비번 설정을 하였습니다. 이는 도커 허브에 다 설명되어 있습니다.

 

2) networks : 도커에서 브릿지를 만들기 위해서는 docker network create를 먼저 하고 컨테이너를 실행할 때 --net 옵션을 해야합니다. 컴포즈에서는 services 영역에는 만들 서비스 이름을 쓰고 networks 영역에 driver를 적어주면 브릿지를 컴포즈가 알아서 만들고 연결해 줍니다.

 

3) depends_on : 어떤 이미지는 어떤 컨테이너가 먼저 선행되어야만 띄울 수 있습니다. 그때 의존성을 명시합니다. ex) 몽고 익스프레스를 띄우기 위해 몽고 db에 접속해야 합니다.

 

docker-compose.yaml을 만들고 up 명령어를 하면 이미지를 다운받고 컨테이너로 실행합니다.

 

이렇게 해서 몽고 DB를 도커 컴포즈를 이용해서 설치하고 실행하고 확인까지 했습니다. 무조건 docker compose를 사용하는 게 편리합니다.

'[Infra] > [도커]' 카테고리의 다른 글

도커 PART.도커 기반 서비스 개발  (0) 2023.01.29
도커 PART.도커 life cycle  (0) 2023.01.26
도커 PART.iptables  (0) 2022.05.28
루트 파일 시스템 RART.환경변수  (0) 2022.05.10
루트 파일 시스템 PART.chroot  (0) 2022.04.07
Comments