기존에 docker run
으로 컨테이너를 생성할 때 옵션값들이 많이 지정되거나, 동시에 여러 컨테이너를 컨트롤하거나, 컨테이너들끼리 통신해야할 경우 사용하는것이 좋음
# docker-compose.yml
# docker-compose 버전명시
version: "3"
# 사용할 image들 즉, 생성할 컨테이너
services:
# 생성할 컨테이너 이름... 하지만 조금 다른 이름으로 생성됨
<container-name>:
# 컨테이너 생성에 사용할 이미지
image: node:10
# WORKDIR ( -w )
working_dir: /usr/src/app
# 포트포워딩 ( -p )
ports:
- 3000:3000
# docker build
build:
# 사용할 Dockerfile위치
context: ./
# 사용할 Dockerfile이름
dockerfile: Dockerfile.dev
# volume지정 ( -v )
volumes:
# node_modules는 컨테이너의 workdir에서 사용
- /usr/src/app/node_modules
# 이외에 모든 파일 참조
- ./:/usr/src/app
# docker-compose.yml
version: "3"
services:
my-node:
image: node:10
working_dir: /usr/src/app
ports:
- 8080:8080
build:
context: ./
dockerfile: Dockerfile.dev
volumes:
- /usr/src/app/node_modules
- ./:/usr/src/app
docker-compose up --build
--build
: 실행할 때 마다 새로 빌드하기 ( 변경사항적용 )특정 형식에 맞춰서 컨테이너 이름이 자동적으로 생성됨
docker-compose를 사용안했을경우
1. docker build -f Dockerfile.dev -t ghksaud55/node ./
2. docker run -d -p 8080:8080 --name my-node -t/usr/src/app -v /usr/src/app/node_modules -v $(pwd):/usr/src/app node:10
docker-compose를 사용할경우
docker-compose up --build
위와 같이 옵션값을 줄줄이 넣는것보다 정해진 형태로 정리한 파일로 만들 수 있으며, 한줄짜리 명령어로 실행이 가능해진다.
다른 장점인 여러컨테이너 동시실행 및 종료, 컨테이너간 통신예시는 조금도 공부한후 추가할 예정
아직 많이 공부하지않아 사용안해본것들이 더많아서 더 공부하고 추가로 정리할 예정