Spring Boot와 Mysql을 docker-compose.yml 파일로 컨테이너를 띄워 로컬 환경이 아닌 도커 환경에서 실행해보겠습니다.
spring:
mvc:
throw-exception-if-no-handler-found: true
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://mysql_db:3306/springboot?serverTimezone=Asia/Seoul&characterEncoding=UTF-8
username: root
password: 1234
thymeleaf:
cache: false
jpa:
properties:
hibernate:
format_sql: true
database-platform: org.hibernate.dialect.MySQL57Dialect
open-in-view: false
show-sql: true
hibernate:
ddl-auto: update
web:
resources:
add-mappings: false
logging:
level:
org:
hibernate:
type: trace
jwt:
secret: 64461201e1af406da538b9c48d801312213f591424asd2sa2
expiration: 3600
refreshExpiration: 1209600
FROM openjdk:17-jdk-slim
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} /app.jar
ENTRYPOINT ["java", "-jar", "/app.jar"]
version: '3'
services:
database:
container_name: mysql_db
image: mysql/mysql-server:5.7
restart: unless-stopped
environment:
MYSQL_ROOT_HOST: '%'
MYSQL_DATABASE: springboot
MYSQL_ROOT_PASSWORD: 1234
TZ: 'Asia/Seoul'
ports:
- "3307:3306"
volumes:
- ./mysql/conf.d:/etc/mysql/conf.d # MySQL 설정 파일 위치
command:
- "mysqld"
- "--character-set-server=utf8mb4"
- "--collation-server=utf8mb4_unicode_ci"
networks:
- test_network
application:
container_name: springboot
restart: on-failure
build:
context: ""
dockerfile: Dockerfile
ports:
- "8080:8080"
depends_on:
- database
networks:
- test_network
networks:
test_network:
dockerfile을 새로 build하고 싶다면 빌드 옵션을 사용하면 됩니다.
$ docker-compose up --build -d
위 그림과 같이 spring Boot와 Mysql이 docker 환경에 잘 띄워진 것을 확인할 수 있습니다.
postman으로 위와 같이 API 요청을 보냈을 때도 잘 실행되는 것을 확인할 수 있습니다.