Docker Compose
what is docker compose
- 여러개의 docker build와 docker run을 정의해 놓은 파일.
- 다중 컨테이너 환경에 유리함
- 단 dockerfile은 있어야 도커파일, 이미지, 컨테이너을 대체하지 못함
- 하나의 호스트에서 사용하기 적합함
how to use it
version:"3.8" -> docker compose의 버전으 의미
services: -> 3개의 컨테이너를 사용할것을 정의
mongodb:
image: 'mongo'
volumes:
- data:/data/db
-> 아래 두개는 동일한 의미를 가짐. 실제로 여기서 명시적으로 할 수도있고 env_file로 파일을 지정해서 할수도있음
environment:
- MONGO_INITDB_ROOT_USERNAME: max
- MONGO_INITDB_ROOT_PASSWORD: secret
env_file:
- ./env/mongo.env
-> 네트워크는 따로 명시할 필요없음. docker compose가 해당 미지들에 서비스에 대한 네트워크를 만듬
-> 명시적으로 하고 싶을 경우에는 아래와 같이 네트워크를 써도됨
net_works:
backend:
build: ./backend
volumes:
- logs:/app/logs
- ./backend:/app
- /app/mode_modules
-> 아래의 서비스가 실행되고 이번 서비스가 실행될 수 있도록하는 docker-compose만의 기능
depends_on:
- mongodb
frontend:
build: ./frontend
ports:
- '3000:3000'
volumes:
- ./frontend/src:/app/src
stdin_open: true
tty : true
depends_on:
- backend
-> 명시된 볼륨은 services와 동일한 선상에 volumes를 만들고 자식에 명시된 볼륨명을 넣어야함. 익명, 바인드볼륨은 아님
volumes:
-data:
-logs:
services : 아래의 사용할 컨테이너를 정의하기위한 부모(서비스)
image : 해당 컨테이너에서 사용할 이미지를 정의
ports : 외부에서 들어올떄 사용할 포트와 내부에서 사용할 포트 정의
Volumes: \
- 명시된 볼륨은 services와 동일한 선상에 volumes 정의 필요. 다른 container에서도 사용가능하므로.
- 익명이나, binding 볼륨은 사용할 필요 x -> 해당 컨테이너에 종속되어있기에
Build : 도커파일위치를 명시
- context : 도커폴더 위치
- dockerfile : 도커파일명
docker compose build
- 위 명령으로 통해서 build만 다시하고 실행되고 있는 프로세스에 영향은 없음
'개인공부 > 도커공부' 카테고리의 다른 글
도커 다중 컨테이너 구성 (0) | 2025.03.10 |
---|---|
도커 네트워크 공부 (0) | 2025.03.10 |