#### 첫 번째 스테이지: 빌드 스테이지
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"]
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)