[Docker] 3.도커 컴포즈 사용하기
어려운 내용이 들어가면 내가 이해하기 어려우니까 도커에 대한 간단한 글
Docker Compose
컨테이너 실행에 필요한 옵션을 yml 파일에 적어두어 컨테이너 간 실행 순서나 의존성을 관리 할 수 있음
설치
Docker desktop을 사용하면 Docker, Docker compose, kubernetes등 앞으로 사용할 것이 전부 설치가 되지만, AWS나 gcloud같은 클라우드 환경에서 사용하기 위해서는 하나 하나 직접 설치해주어야 한다.
docker compose 설치 법은 다음 과정을 따른다.
- 다운로드 및 docker-compose를 사용하기 위해 bin에 파일 생성
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-`uname -s`-`uname -m` | sudo tee /usr/local/bin/docker-compose > /dev/null
- 실행 권한 변경
$ sudo chmod +x /usr/local/bin/docker-compose
- 심볼릭 링크 생성
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
- 확인
$ docker-compose --version
Docker compose
파일 예시
# docker-compose.yml
version: '3'
services:
proxy:
image: nginx:latest
container_name: nginx_container
ports:
- "80:80"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
web_1:
build:
context: ./app
container_name: web_1
expose:
- "8080"
web_2:
build:
context: ./app
container_name: web_2
expose:
- "8080"
-
version: 스키마 버전
docker-compose-version 에서 도커 엔진별 스키마 버전 확인 가능
-
services: 실행할 컨테이너 목록
-
- image: 도커 이미지
- container_name: 생성 될 컨테이너 이름
- volumes: 컨테이너 내의 volume과 마운트
- ports: 포워딩 할 포트
- build: 직접 이미지를 빌드할 경우
- context: docker build를 실행할 디렉토리 경로
- environment: 환경변수
- expose: 컨테이너에서 리스닝할 포트
-
Docker compose주요 명령어
이미지 빌드 후 서비스 실행
$ docker-compose up
-d 옵션으로 백그라운드 실행
서비스 제거
$ docker-compose down
서비스 목록
$ docker-compose ps
실행/중지
$ docker-compose start
$ docker-compose stop
로그
$ docker-compose logs
서비스 이름을 적으면 해당 서비스의 로그만 확인
-f: 로그 스트림
docker-compose.yml 업데이트
docker-compose.yml파일을 수정하고 다시 up 명령어를 사용하면 자동으로 컨테이너를 추가/재생성해준다.