spring boot + docker + docker compose - 0

최경현·2024년 5월 20일

DOCKER

#### 첫 번째 스테이지: 빌드 스테이지
FROM gradle:jdk17-graal-jammy as builder

#### 작업 디렉토리 설정
WORKDIR /app

#### 소스 코드와 Gradle 래퍼 복사
COPY gradlew .
COPY gradle gradle
COPY build.gradle .
COPY settings.gradle .

#### Gradle 래퍼에 실행 권한 부여
RUN chmod +x ./gradlew

#### 종속성 설치
RUN ./gradlew dependencies --no-daemon

#### 소스 코드 복사
COPY src src

#### 애플리케이션 빌드
RUN ./gradlew build --no-daemon -x test

#### 두 번째 스테이지: 실행 스테이지
FROM ghcr.io/graalvm/jdk-community:17

#### 작업 디렉토리 설정
WORKDIR /app

#### 첫 번째 스테이지에서 빌드된 JAR 파일 복사
COPY --from=builder /app/build/libs/*.jar app.jar

#### 포트 노출
EXPOSE 8080

#### 실행할 JAR 파일 지정
ENTRYPOINT ["java", "-jar", "-Dspring.profiles.active=prod", "app.jar"]

Docker-compose.yml

version: '3.9'

services:
  db:
    image: mariadb:latest
    environment:
      MYSQL_ROOT_PASSWORD: {db비밀번호}
      MYSQL_DATABASE: test_dev
    ports:
      - "3307:3306"
    networks:
      - my-network

  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - my-network

## application-secret.yml파일에서 host : redis로 적용해야함 (내 도커 컨테이너 명)
##    redis:
##      host: redis
##      port: 6379

  app:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: projecttest
    environment:
      SPRING_DATASOURCE_URL: jdbc:mariadb://db:3306/test_dev?useUnicode=true&characterEncoding=utf8&autoReconnect=true&serverTimezone=Asia/Seoul
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: {db비밀번호}
      SPRING_DATASOURCE_DRIVER_CLASS_NAME: org.mariadb.jdbc.Driver
      SPRING_JPA_HIBERNATE_DDL_AUTO: update
      SPRING_JPA_PROPERTIES_HIBERNATE_DIALECT: org.hibernate.dialect.MariaDBDialect
      SPRING_JPA_PROPERTIES_HIBERNATE_SHOW_SQL: false
      SPRING_JPA_PROPERTIES_HIBERNATE_FORMAT_SQL: true
      SPRING_JPA_PROPERTIES_HIBERNATE_USE_SQL_COMMENTS: true
      SPRING_JPA_PROPERTIES_HIBERNATE_DEFAULT_BATCH_FETCH_SIZE: 100
      LOGGING_LEVEL_ORG_HIBERNATE_SQL: DEBUG
      LOGGING_LEVEL_ORG_HIBERNATE_ORM_JDBC_BIND: TRACE
      LOGGING_LEVEL_ORG_HIBERNATE_ORM_JDBC_EXTRACT: TRACE
    ports:
      - "8080:8080"
    depends_on:
      - db
    networks:
      - my-network

networks:
  my-network:
    driver: bridge

docker내에서 db 조회방법
참고사이트 (https://padosol.tistory.com/42)

profile
ㅇㅇ

0개의 댓글