diff --git a/.github/workflows/main-ci-cd.yml b/.github/workflows/main-ci-cd.yml index 5da5b591..a8666db9 100644 --- a/.github/workflows/main-ci-cd.yml +++ b/.github/workflows/main-ci-cd.yml @@ -61,7 +61,7 @@ jobs: EOF echo "${{ secrets.APPLICATION_PROD_YML }}" > ./src/main/resources/application-prod.yml - echo "${{ secrets.APPLICATION_OAUTH2_DEV_YML }}" > ./src/main/resources/application-oauth2-dev.yml + echo "${{ secrets.APPLICATION_OAUTH2_PROD_YML }}" > ./src/main/resources/application-oauth2-prod.yml mkdir -p src/test/resources echo "${{ secrets.APPLICATION_TEST_YML }}" > ./src/test/resources/application-test.yml diff --git a/docker-compose.yml b/docker-compose.yml index cb70ce91..afea1abb 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -5,10 +5,12 @@ services: container_name: pinhouse-app ports: - "8080:8080" - env_file: - - .env # 여기서 .env 파일을 읽어 환경 변수로 주입 + volumes: + # 서버의 설정파일 폴더를 컨테이너 내부로 연결 + - /home/ubuntu/app/config:/app/config environment: - - SPRING_PROFILES_ACTIVE=prod + # Spring에게 외부 파일을 읽으라고 명령 (이게 핵심입니다) + - SPRING_CONFIG_LOCATION=optional:classpath:/,file:/app/config/application-prod.yml,file:/app/config/application-oauth2-prod.yml networks: - backend-bridge diff --git a/src/main/java/com/pinHouse/server/core/config/swaagger/ProdSwaggerConfig.java b/src/main/java/com/pinHouse/server/core/config/swaagger/ProdSwaggerConfig.java new file mode 100644 index 00000000..229e8d85 --- /dev/null +++ b/src/main/java/com/pinHouse/server/core/config/swaagger/ProdSwaggerConfig.java @@ -0,0 +1,49 @@ +package com.pinHouse.server.core.config.swaagger; + +import io.swagger.v3.oas.annotations.OpenAPIDefinition; +import io.swagger.v3.oas.annotations.servers.Server; +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.media.Schema; +import org.springdoc.core.customizers.OpenApiCustomizer; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; + +import java.util.Map; +import java.util.TreeMap; + +/** + * Swagger / OpenAPI 설정 클래스 + * - HTTPS 설정으로 인해 @OpenAPIDefinition 추가 + * - 스웨거 내부 JWT 설정 추가 + */ + +@Configuration +@Profile("prod") +@OpenAPIDefinition(servers = {@Server(url = "https://api.pinhouse.co.kr", description = "PinHouse 운영 서버")}) +public class ProdSwaggerConfig { + + @Bean + public OpenAPI openAPI() { + return new OpenAPI() + .info(apiInfo()); + } + + + private Info apiInfo() { + return new Info() + .title("PinHouse Swagger") + .description("핀하우스 스웨거입니다.") + .version("1.0.0"); + } + + /// 스키마 이름 기준 오름차순 + @Bean + public OpenApiCustomizer sortSchemasAlphabetically() { + return openApi -> { + Map schemas = openApi.getComponents().getSchemas(); + openApi.getComponents().setSchemas(new TreeMap<>(schemas)); + }; + } +}