From ac900ac12cddd383dd71a29164040d37eb7b5a17 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 26 Dec 2025 09:14:33 +0900 Subject: [PATCH 1/5] =?UTF-8?q?chore:=20dockerfile=20=EB=B0=8F=20prod=20?= =?UTF-8?q?=ED=94=84=EB=A1=9C=ED=8C=8C=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 14 ++++++++++++++ src/main/resources/application-prod.yml | 4 ++++ 2 files changed, 18 insertions(+) create mode 100644 Dockerfile create mode 100644 src/main/resources/application-prod.yml diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..c9f4db35 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +# ---- runtime ---- +FROM eclipse-temurin:17-jre + +WORKDIR /app + +# CI에서 만든 jar를 복사 (파일명은 workflow에서 app.jar로 맞출 예정) +COPY app.jar /app/app.jar + +# 필요하면 타임존 +ENV TZ=Asia/Seoul + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 00000000..8c624e4d --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,4 @@ +spring: + datasource: + username: ${MYSQL_USERNAME} + password: ${MYSQL_PASSWORD} \ No newline at end of file From 8ec8b8bece1727d4e8b86fec0f31c0808a265363 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 26 Dec 2025 10:28:37 +0900 Subject: [PATCH 2/5] =?UTF-8?q?chore:=20docker-compose=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20=EB=B0=8F=20=ED=94=84=EB=A1=9C=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ Dockerfile | 5 +---- docker-compose.yml | 8 ++++++++ src/main/resources/application-prod.yml | 4 ++++ src/main/resources/application.yml | 2 -- 5 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 docker-compose.yml diff --git a/.gitignore b/.gitignore index 39f8dcfa..d7d978d4 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ src/main/resources/application-dev.yml ## gradle /.gradle/ + +.env diff --git a/Dockerfile b/Dockerfile index c9f4db35..b889c513 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,10 +4,7 @@ FROM eclipse-temurin:17-jre WORKDIR /app # CI에서 만든 jar를 복사 (파일명은 workflow에서 app.jar로 맞출 예정) -COPY app.jar /app/app.jar - -# 필요하면 타임존 -ENV TZ=Asia/Seoul +COPY build/libs/baektracker-0.0.1-SNAPSHOT.jar app.jar EXPOSE 8080 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..c84d46ba --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,8 @@ +services: + app: + image: test:latest + ports: + - "8080:8080" + env_file: + - .env + restart: always \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 8c624e4d..559cba25 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -1,4 +1,8 @@ +server: + port: ${PORT} + spring: datasource: + url: ${DB_URL} username: ${MYSQL_USERNAME} password: ${MYSQL_PASSWORD} \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 5e4dc6f2..32de391a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,5 +1,4 @@ server: - port: 20000 servlet: encoding: force: true @@ -14,7 +13,6 @@ spring: open-in-view: false datasource: driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://127.0.0.1:3306/solved_db?useUnicode=yes&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=Asia/Seoul&useSSL=false&allowPublicKeyRetrieval=true web: resources: add-mappings: true From 8ef5dc30811399e8020d17378f0efae003436cb2 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 26 Dec 2025 11:05:29 +0900 Subject: [PATCH 3/5] =?UTF-8?q?fix:=20datasource=20=EC=B0=B8=EC=A1=B0=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=20(prod=20=ED=94=84=EB=A1=9C=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=EC=97=90=EC=84=9C=20=EA=B0=80=EC=A0=B8=EC=98=A4?= =?UTF-8?q?=EB=8F=84=EB=A1=9D)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../global/config/DatabaseConfig.java | 30 ++----------------- 1 file changed, 2 insertions(+), 28 deletions(-) diff --git a/src/main/java/com/baektracker/global/config/DatabaseConfig.java b/src/main/java/com/baektracker/global/config/DatabaseConfig.java index 649aa8a0..b14fbc39 100644 --- a/src/main/java/com/baektracker/global/config/DatabaseConfig.java +++ b/src/main/java/com/baektracker/global/config/DatabaseConfig.java @@ -2,8 +2,6 @@ import jakarta.persistence.EntityManagerFactory; import javax.sql.DataSource; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; @@ -14,35 +12,11 @@ @Configuration public class DatabaseConfig { - @Value("${spring.datasource.driver-class-name}") - public String driverClassName; - - @Value("${spring.datasource.url}") - public String url; - - @Value("${spring.datasource.username}") - public String username; - - @Value("${spring.datasource.password}") - public String password; - @Bean public BCryptPasswordEncoder passwordEncoder() { return new BCryptPasswordEncoder(); } - @Bean - public DataSource dataSource() { - DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create(); - // Mybatis Debuging - dataSourceBuilder.driverClassName(driverClassName); - dataSourceBuilder.url(url); - dataSourceBuilder.username(username); - dataSourceBuilder.password(password); - - return dataSourceBuilder.build(); - } - @Bean @Primary public PlatformTransactionManager transactionManager(EntityManagerFactory emf) { @@ -50,7 +24,7 @@ public PlatformTransactionManager transactionManager(EntityManagerFactory emf) { } @Bean(name = "mybatisTxManager") - public PlatformTransactionManager mybatisTxManager() { - return new DataSourceTransactionManager(dataSource()); + public PlatformTransactionManager mybatisTxManager(DataSource dataSource) { + return new DataSourceTransactionManager(dataSource); } } From ed7c2f960ffe66b2d89e2b61162d35fd56cf2390 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 26 Dec 2025 11:32:11 +0900 Subject: [PATCH 4/5] =?UTF-8?q?fix:=20CI=20workflow=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c33aa898..ee79c335 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,14 +32,6 @@ jobs: distribution: "temurin" cache: "gradle" - # 1-3. '*.yml' 파일 세팅 - - name: Write Spring yml files - run: | - mkdir -p src/main/resources - - # 배포용(prod)만 주입 - echo "${{ secrets.APPLICATION_PROD_YML }}" > src/main/resources/application-prod.yml - - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 @@ -47,7 +39,4 @@ jobs: run: chmod +x gradlew - name: Build (includes React build) - run: ./gradlew clean build --no-daemon - env: - SPRING_PROFILES_ACTIVE: prod - CI: "false" + run: ./gradlew clean bootJar --no-daemon From 29e1559efea4aed90c7fe924ef17bd2d22d60a50 Mon Sep 17 00:00:00 2001 From: charles Date: Fri, 26 Dec 2025 11:40:07 +0900 Subject: [PATCH 5/5] =?UTF-8?q?build:=20buildReact=20=EC=8B=9C=20CI=20?= =?UTF-8?q?=EB=B9=84=ED=99=9C=EC=84=B1=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 1 + 1 file changed, 1 insertion(+) diff --git a/build.gradle b/build.gradle index 35f4d298..ab95fdfd 100644 --- a/build.gradle +++ b/build.gradle @@ -123,6 +123,7 @@ tasks.register('installReact', Exec) { } tasks.register('buildReact', Exec) { + environment "CI", "false" dependsOn "installReact" workingDir "$frontendDir" inputs.dir "$frontendDir"