728x90
반응형
1. Docker Compose 란?
- 'docker build'와 'docker run' 명령을 대체할 수 있는 도구
- Dockerfile을 대체하지 않는다. 함께 작동한다.
- 이미지나 컨테이너를 대체하지 않는다.
- 다수의 호스트에서 다중 컨테이너를 관리하는데는 적합하지 않다.
2. Docker Compose를 쓰는 이유?
기본적으로 터미널에서 도커 명령으로 할 수 있는 것들을 service(컨테이너) 로 관리할 수 있다.
- 포트 정의
- 환경변수 정의
- 볼륨 정의
- 네트워크 정의
3. 사용하기
프로젝트 루트 파일에 docker-compose.yaml 파일을 생성해준다.
( https://docs.docker.com/compose/compose-file 참조 )
/docker-compose.yaml
version: "3.8"
service:
mongodb:
# 이미지
image: 'mongo'
# 볼륨
volumes:
- data:/data/db
# 환경변수
environmnet:
MONGO_USERNAME: max
# 환경변수 파일일 경우
env_file:
- ./env/mongo.env
# 네트워크
networks:
- goals-net
backend:
frontend:
4. Linux에 Docker Compose 설치
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
$ docker-compose --version
5. Docker Compose up
아래 명령어를 입력하면 이미지를 빌드하고 컨테이너를 실행해준다.
-d 플래그를 붙여 detached 모드에서 실행할 수도 있다.
$ docker-compose up
6. Docker Compose down
아래 명령어를 입력하면 모든 컨테이너가 삭제되고 디폴트 네트워크와 모든 것이 종료된다.
-v 플래그를 추가해 볼륨도 삭제할 수 있다.
$ docker-compose down
7. Backend file, Frontend file 컴포징
version: "3.8"
service:
mongodb:
...
backend:
# 이미지 빌드
build: ./backend
# 도커 파일 직접 명시할 때 ( 파일 이름이 Dockerfile이 아닐 때 )
# build:
# context: ./backend
# dockerfile: Dockerfile
# args:
# some-arg: 1
# 포트지정
ports:
- '80:80'
# 볼륨지정
volumes:
- logs:/app/logs
- ./backend:/app
- /app/node_modules
# 환경 변수 파일
env_file:
- ./env/backend.env
# 의존성 추가
depends_on
- mongodb
frontend:
# 이미지 빌드
build: ./frontend
# 포트지정
ports:
- '80:80'
# 볼륨지정
volumes:
- ./frontend/src:/app/src
# it 플래그
stdin_open: true
tty: true
# 의존성 추가
depends_on
- mongodb
728x90
반응형
'DevOps > Docker' 카테고리의 다른 글
Docker | Spring Boot, Next.js 배포 | Spring boot 배포하기 (0) | 2022.11.03 |
---|---|
Docker | Spring Boot, Next.js 배포 | Spring Boot 배포하기 (0) | 2022.09.22 |
Docker | Network, MongoDB, Node.js, React.js 도커화 명령어 (0) | 2022.06.14 |
Docker | 데이터 관리 및 볼륨으로 작업하기 (0) | 2022.06.02 |
Docker | 이미지 & 컨테이너(2) | 관리하기 (0) | 2022.05.31 |