도커 컴포즈?
도커 컴포즈는 단일 서버에 여러개의 컨테이너를 하나의 서비스로 해서 컨테이너의 묶음으로 관리할 수 있는
작업 환경을 제공하는 관리 도구
리눅스 환경에서
sudo apt install docker
sudo apt install docker-compose
이런 화면이 나온다면 성공!
docker-compose.yml
version: '3'
services:
b-mysql:
image: mysql:8.0.32
container_name: b-mysql
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
MYSQL_DATABASE: ${MYSQL_DATABASE}
ports:
- "3307:3306"
b-redis:
image: redis:latest
container_name: b-redis
ports:
- "6379:6379"
yqml 파일에서는 도커 컴포즈가 탭을 인식하지 못한다고 한다. 스페이스바 2개를 사용하자.
어떠한 설정도 하지 않으면 도커 컴포즈는 현재 디렉토리의 docker-ompose.yml 파일을 읽음
로컬의 도커 엔진에게 켄테이너 생성을 요청함
그리고 나서 docker-compose 명령을 실행할 때 -f 플래그를 사용하여 환경 변수 파일을 지정합니다.
docker-compose -f your-compose-file.yml --env-file .env up
이 경우 docker-compose.yml 파일을 사용하고 test.env 파일에 정의된 환경 변수를 적용하여 컨테이너를 실행하려면 다음과 같이 명령어를 작성할 수 있습니다
docker-compose -f docker-compose.yml --env-file test.env up
docker-compose.yml 파일의 옵션
- version -> yaml 파일 포맷의 버전을 나타냄
- services -> 생성될 컨테이너들을 묶어놓은 단위입니다. 서비스 아래에서 각 컨테이너에 적용될 생성 옵션 적용
- 서비스의 컨테이너를 생성할 때 쓰일 이미지의 이름을 설정합니다.
- 이미지 이름 포맷은 docker run과 같으며 만일 이미지가 도커에 존재하지 않으면 도커 허브에서 자동으로 내려받습니다.
- environment -> docker run 명령어의 --env, -e 옵션과 동일합니다. 서비스의 컨테이너 내부에서 사용할 환경변수를 지정하며, 딕셔너리(Dictionary)나 배열 형태로 사용할 수 있습니다.
- port -> docker run 명령어의 -p와 같으며 서비스의 컨테이너를 개방할 포트를 설정합니다. 그러나 단일 호스트 환경에서 80:80과 같이 호스트의 특정 포트를 서비스의 컨테이너에 연결하면 docker-compose scale 명령어로 서비스의 컨테이너의 수를 늘릴 수 없습니다.
도커 컴포즈 명령어
# Foreground로 도커 컴포즈 프로젝트 실행
$ docker-compose up
# Background로 도커 컴포즈 프로젝트 실행
$ docker-compose up -d
# 프로젝트 이름 my-project로 변경하여 도커 컴포즈 프로젝트 실행
$ docker-compose -p my-project up -d
# docker-compose scale 명령어로 각 서비스에 여러개의 컨테이너를 생성
# 단, scale 시 주의할 점은 포트를 여러개 지정하면 충돌이나므로 호스트 포트는 하나만 지정해주어야 함.
$ docker-compose scale [서비스명]=[컨테이너 갯수]
----------------------------------------------------------------------------
# 프로젝트 내 컨테이너 및 네트워크 종료 및 제거
$ docker-compose down
# 프로젝트 내 컨테이너, 네트워크 및 볼륨 종료 및 제거
$ docker-compose down -v
-----------------------------------------------------------------------------
# 도커 컴포즈 프로젝트 목록 확인
$ docker-compose ps
'가상화 기술과 관리 > Docker' 카테고리의 다른 글
Docker 노트정리4 (docker-compose) (0) | 2024.02.24 |
---|---|
Docker 노트정리3 (도커 볼륨) (1) | 2024.02.17 |
Docker - Java 개발자를 위한 완벽 실습 과정 노트정리2 (도커 네트워크) (1) | 2024.01.13 |
Docker노트정리 commit, build(jar, war) (0) | 2023.12.25 |
[Docker] image commit, build 방식 차이 (1) | 2023.12.23 |