Docker를 사용하여 Spring Boot와 MariaDB를 한 컨테이너에서 실행 및 배포하기
Docker Compose를 사용하여 Spring Boot 애플리케이션과 MariaDB를 한 컨테이너에서 실행하고 배포하는 방법을 알아보겠습니다. Docker Compose를 사용하면 애플리케이션과 데이터베이스를 간편하게 관리할 수 있습니다.
- Docker Compose 파일과 Dockerfile 작성하기
먼저, 프로젝트 디렉토리에 docker-compose.yml 파일을 작성합니다.
version: '3.8'
services:
database:
container_name: database
image: mariadb
volumes:
# DB의 정보를 호스트OS에 저장하기 위한 볼륨 매핑
- ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro
- ~/docker/mariadb/var/lib/mysql:/var/lib/mysql
- ~/docker/mariadb/var/log/maria:/var/log/maria
environment:
- MYSQL_DATABASE={사용할 DATABASE명}
- MYSQL_ROOT_PASSWORD={ROOT 계정 비밀번호}
- MYSQL_ROOT_HOST=%
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
ports:
- 3306:3306
volumes:
# DB가 실행될 때 SpringBoot보다 먼저 실행되는 스크립트
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
application:
build: .
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://database:3306/tackle?useUnicode=true
SPRING_DATASOURCE_USERNAME: {SpringBoot에서 설정한 USERNAME}
SPRING_DATASOURCE_PASSWORD: {SpringBoot에서 설정한 PASSWORD}
ports:
- 8080:8080
depends_on:
- database
위의 docker-compose.yml 파일은 두 개의 서비스(database와 application)를 정의합니다. database 서비스는 MariaDB를 실행하고, application 서비스는 Spring Boot 애플리케이션을 실행합니다. 각 서비스의 설정을 적절히 수정하여 사용하시면 됩니다.
SpringBoot의 컨테이너 생성 영역입니다.
# 서버를 구동시킬 자바를 받아옵니다.
FROM adoptopenjdk:11-jre-hotspot
# `JAR_FILE` 이라는 이름으로 build 한 jar 파일을 지정합니다.
ARG JAR_FILE=./app.jar /app.jar
# 지정한 jar 파일을 app.jar 라는 이름으로 Docker Container에 추가합니다.
ADD ${JAR_FILE} app.jar
# app.jar 파일을 실행합니다.
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
같은 폴더에 위치한 빌드된 app.jar 를 컨테이너에 복사를 하여 컨테이너 안에서 MariaDB의 로딩이 끝나고 SpringBoot가 실행됩니다.
- Spring Boot 애플리케이션 설정하기
Spring Boot 애플리케이션의 application.properties 또는 application.yml 파일에서 데이터베이스 연결 정보를 설정해야 합니다.
spring.datasource.url=jdbc:mariadb://database:3306/DATABASE명?useUnicode=true
spring.datasource.username=USER
spring.datasource.password=PASSWORD
위 설정에서 database는 Docker Compose 파일에서 정의한 MariaDB 서비스의 이름입니다. 데이터베이스 사용자의 이름과 비밀번호를 필요에 따라 설정을 수정하여 사용하시면 됩니다.
- 애플리케이션 빌드 및 실행하기
이제 Docker Compose를 사용하여 애플리케이션을 빌드하고 실행할 수 있습니다.
Bash에서 docker-compose up -d
이 명령은 Docker Compose 파일을 기반으로 애플리케이션과 데이터베이스를 빌드하고 컨테이너를 실행합니다. -d 옵션은 백그라운드에서 실행하도록 합니다.
- 애플리케이션 확인하기
애플리케이션과 데이터베이스가 성공적으로 실행되었는지 확인하기 위해 웹 브라우저에서 http://localhost:8080으로 접속해보세요. Spring Boot 애플리케이션의 홈 페이지가 표시되면 정상적으로 동작하는 것입니다.
Docker를 사용하여 Spring Boot와 MariaDB를 한 컨테이너에서 실행 및 배포하기
Docker Compose를 사용하여 Spring Boot 애플리케이션과 MariaDB를 한 컨테이너에서 실행하고 배포하는 방법을 알아보겠습니다. Docker Compose를 사용하면 애플리케이션과 데이터베이스를 간편하게 관리할 수 있습니다.
- Docker Compose 파일과 Dockerfile 작성하기
먼저, 프로젝트 디렉토리에 docker-compose.yml 파일을 작성합니다.
version: '3.8'
services:
database:
container_name: database
image: mariadb
volumes:
# DB의 정보를 호스트OS에 저장하기 위한 볼륨 매핑
- ~/docker/mariadb/etc/mysql/conf.d:/etc/mysql/conf.d:ro
- ~/docker/mariadb/var/lib/mysql:/var/lib/mysql
- ~/docker/mariadb/var/log/maria:/var/log/maria
environment:
- MYSQL_DATABASE={사용할 DATABASE명}
- MYSQL_ROOT_PASSWORD={ROOT 계정 비밀번호}
- MYSQL_ROOT_HOST=%
command: ['--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
ports:
- 3306:3306
volumes:
# DB가 실행될 때 SpringBoot보다 먼저 실행되는 스크립트
- ./init.sql:/docker-entrypoint-initdb.d/init.sql
application:
build: .
environment:
SPRING_DATASOURCE_URL: jdbc:mariadb://database:3306/tackle?useUnicode=true
SPRING_DATASOURCE_USERNAME: {SpringBoot에서 설정한 USERNAME}
SPRING_DATASOURCE_PASSWORD: {SpringBoot에서 설정한 PASSWORD}
ports:
- 8080:8080
depends_on:
- database
위의 docker-compose.yml 파일은 두 개의 서비스(database와 application)를 정의합니다. database 서비스는 MariaDB를 실행하고, application 서비스는 Spring Boot 애플리케이션을 실행합니다. 각 서비스의 설정을 적절히 수정하여 사용하시면 됩니다.
SpringBoot의 컨테이너 생성 영역입니다.
# 서버를 구동시킬 자바를 받아옵니다.
FROM adoptopenjdk:11-jre-hotspot
# `JAR_FILE` 이라는 이름으로 build 한 jar 파일을 지정합니다.
ARG JAR_FILE=./app.jar /app.jar
# 지정한 jar 파일을 app.jar 라는 이름으로 Docker Container에 추가합니다.
ADD ${JAR_FILE} app.jar
# app.jar 파일을 실행합니다.
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
같은 폴더에 위치한 빌드된 app.jar 를 컨테이너에 복사를 하여 컨테이너 안에서 MariaDB의 로딩이 끝나고 SpringBoot가 실행됩니다.
- Spring Boot 애플리케이션 설정하기
Spring Boot 애플리케이션의 application.properties 또는 application.yml 파일에서 데이터베이스 연결 정보를 설정해야 합니다.
spring.datasource.url=jdbc:mariadb://database:3306/DATABASE명?useUnicode=true
spring.datasource.username=USER
spring.datasource.password=PASSWORD
위 설정에서 database는 Docker Compose 파일에서 정의한 MariaDB 서비스의 이름입니다. 데이터베이스 사용자의 이름과 비밀번호를 필요에 따라 설정을 수정하여 사용하시면 됩니다.
- 애플리케이션 빌드 및 실행하기
이제 Docker Compose를 사용하여 애플리케이션을 빌드하고 실행할 수 있습니다.
Bash에서 docker-compose up -d
이 명령은 Docker Compose 파일을 기반으로 애플리케이션과 데이터베이스를 빌드하고 컨테이너를 실행합니다. -d 옵션은 백그라운드에서 실행하도록 합니다.
- 애플리케이션 확인하기
애플리케이션과 데이터베이스가 성공적으로 실행되었는지 확인하기 위해 웹 브라우저에서 http://localhost:8080으로 접속해보세요. Spring Boot 애플리케이션의 홈 페이지가 표시되면 정상적으로 동작하는 것입니다.