[DevOps] Docker로 Spring Boot & Mysql 실행

Donghoon Jeong·2023년 11월 21일
0

DevOps

목록 보기
2/4
post-thumbnail

Spring Boot와 Mysql을 docker-compose.yml 파일로 컨테이너를 띄워 로컬 환경이 아닌 도커 환경에서 실행해보겠습니다.


Docker로 Spring Boot, Mysql 실행

application.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

Dockerfile 생성

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

docker-compose.yml 생성

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:

docker-compose 파일 실행

dockerfile을 새로 build하고 싶다면 빌드 옵션을 사용하면 됩니다.

$ docker-compose up --build -d

실행 결과

Docker Container

위 그림과 같이 spring Boot와 Mysql이 docker 환경에 잘 띄워진 것을 확인할 수 있습니다.

postman으로 위와 같이 API 요청을 보냈을 때도 잘 실행되는 것을 확인할 수 있습니다.

profile
정신 🍒 !

0개의 댓글