imhamburger 님의 블로그
도커(Docker) - Docker compose 사용하기 본문
도커 컴포즈는 단일서버에서 여러개의 컨테이너를 하나의 서비스로 정의해 컨테이너를 묶음으로 관리할 수 있다.
여러 개의 컨테이너가 하나의 어플리케이션으로 동작할 때 도커 컴포즈를 사용하지 않는다면, 각각 한개씩 생성해야 하는 번거로움이 있다.
컨테이너의 수가 많아지고 정의해야할 옵션이 많아진다면 도커 컴포즈를 사용하는 것이 좋다.
도커 컴포즈를 사용하는 방법은 도커 공식문서에 나와있다. (공식문서)
이제 도커 yml 파일을 이용해 만들어놓은 API 와 MariaDB를 함께 실행시켜보자.
MariaDB는 도커허브에 있는 것을 사용하였다. (MariaDB 도커허브)
docker-compose.yml
services:
#데이터베이스
database:
image: <이미지 이름>
container_name: <컨테이너 이름>
environment:
MARIADB_ROOT_PASSWORD: example
MARIADB_USER: <DB 유저 이름>
MARIADB_PASSWORD: <DB 비밀번호>
MARIADB_DATABASE: <데이터베이스 이름>
volumes:
- <로컬 작업파일>:<작업파일 도커 경로지정>
ports:
- <포트번호>:3306
#앱
app:
container_name: <컨테이너 이름>
build: .
ports:
- <포트번호>:8080
restart: always
depends_on:
- database #database가 먼저 뜨고 app이 실행 의존성설정
links:
- database
platform: linux/amd64
예시
services:
database:
image: mariadb
container_name: todo-mariadb
environment:
MARIADB_ROOT_PASSWORD: example
MARIADB_USER: <유저이름 입력>
MARIADB_PASSWORD: <비밀번호 입력>
MARIADB_DATABASE: <데이터베이스 입력>
volumes:
- ./src/main/resources/db_config/initdb.d:/docker-entrypoint-initdb.d
ports:
- 6033:3306
app:
container_name: todo-app
build: .
ports:
- 8888:8080
restart: always
depends_on:
- database #database가 먼저 뜨고 app이 실행 의존성설정
links:
- database
platform: linux/amd64
yml 파일에 적는 건 도커를 run 할 때 쓰는 옵션들과 동일하다. 이미지 이름, 컨테이너 이름, environment 등등.
옵션에 관한 설명은 이전에 했던 프로젝트 글을 참고하면 좋다.
결과
도커컴포즈 빌드
docker compose up -d --force-recreate --build
--force-recreate: 이 옵션은 기존 컨테이너가 존재할 경우에도 해당 컨테이너를 강제로 다시 생성하는 역할을 한다. 컨테이너에 변화가 없다고 하더라도 무조건 새롭게 컨테이너를 생성하여 실행한다. 만약, 컨테이너 내부에서 변경된 설정이나 파일 시스템에 의한 문제를 해결하거나, 깨끗한 상태에서 컨테이너를 재시작하고 싶을 때 사용된다.
--build: 이 옵션은 도커 이미지를 빌드할 때, 캐시를 사용하지 않고 항상 새로 빌드하도록 강제한다. 보통 Dockerfile이 변경되었거나 이미지 내 소스 코드가 변경된 경우 새로 빌드를 하고 싶은 경우에 사용된다. 이 옵션을 사용하면 이미지 빌드 과정에서 기존 빌드 캐시를 사용하지 않고 처음부터 새로 빌드.
Docker compose 환경 종료
docker compose down
'도커(Docker)' 카테고리의 다른 글
도커(Docker) - 도커 컴포즈로 Nginx 로드밸런서 실행하기 (4) | 2024.10.31 |
---|---|
도커(Docker) - 같은파일인데 도커 이미지 안에서의 결과랑 내 컴퓨터에서 출력되는 결과가 다르게 나오는 오류 (2) | 2024.09.05 |
도커(Docker) - 명령어 모음 (0) | 2024.08.25 |
도커(Docker) - 도커 이해하기 (0) | 2024.07.04 |
도커(Docker) - 가상화 기술과 컨테이너 이해하기 (0) | 2024.07.03 |