[Docker] Docker Compose를 이용하여 멀티 컨테이너 환경 구성하기

예원·2022년 11월 16일
0

Docker

목록 보기
4/5

Spring boot + mysql 구조의 개발을 한다고 한다.
Dockerfile로 각각 만들어 올리는 방법도 있지만, 장비가 증설되면 각 컨데이너 설정을 다시 해줘야한다는 불편함이 있다.

Docker compose를 이용해 멀티 컨테이너 환경을 구성하고자 한다.

Spring boot 프로젝트 준비

먼저 spring boot 프로젝트를 빌드하여 *.jar 파일을 준비한다.

Dockerfile

Spring boot에 관련한 도커 이미지를 만들기 위한 Dockerfile을 작성한다.
자세한 내용은 이 글에서 볼 수 있다.

FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

docker-compose.yml

Docker에서 사용하는 컨테이너를 한 곳에서 관리하기 위해 docker-compose.xml을 작성한다.

version : "3"

services:
  spring-db:
    container_name: spring-db
    image: mysql:8.0.13
    restart: always
    environment:
        - MYSQL_DATABASE=test
        - MYSQL_ROOT_PASSWORD=testpw
        - MYSQL_ROOT_HOST=%
        - TZ=Asia/Seoul
    command:
    	- --lower_case_table_names=1
        - --character-set-server=utf8mb4
        - --collation-server=utf8mb4_unicode_ci
    volumes:
      - ./db/data:/var/lib/mysql:rw
    ports:
      - 3306:3306

  spring-app:
    container_name: spring-app
    build: .
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://spring-db:3306/test?characterEncoding=UTF-8&serverTimezone=Asia/Seoul
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: testpw
    ports:
      - 80:80
    depends_on:
      - spring-db

여기서 사용한 명령어에 대해서는 이 글에서 확인할 수 있다.

docker-compose 실행

이제 docker-compose를 실행한다. 그러면 필요한 image들을 다운로드 받고 작성한 명령어대로 컨테이너를 생성해준다.

sudo docker-compose up -d

더이상 컨테이너를 사용하지 않는다면

sudo docker-compose down

명령어를 통해 docker-compose.yml에 등록된 컨테이너가 삭제되고 네트워크 구성이 해제된다.

jar 파일 변경시

sudo docker-compose down
sudo docker-compose build --no-cache
sudo docker-compose up -d

docker log 확인하기

실행중인 컨테이너의 로그를 보고 싶다면 docker logs 명령어를 이용하면 된다.

sudo docker logs [컨테이너명]

reference
Docker compose로 Spring Boot 올리기
[Docker] Docker Compose build

0개의 댓글