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 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 new file mode 100644 index 00000000..b889c513 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +# ---- runtime ---- +FROM eclipse-temurin:17-jre + +WORKDIR /app + +# CI에서 만든 jar를 복사 (파일명은 workflow에서 app.jar로 맞출 예정) +COPY build/libs/baektracker-0.0.1-SNAPSHOT.jar app.jar + +EXPOSE 8080 + +ENTRYPOINT ["java", "-jar", "/app/app.jar"] 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" 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/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); } } diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 00000000..559cba25 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +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