카테고리 없음

모노레포 / 멀티모듈로 백엔드 프로젝트

코딩연습중 2025. 4. 30. 16:34

1. 깃허브 레포 생성

git clone 해오기.

2. 안에 폴더 생성

cd Tranner_BE_2

mkdir api-gateway


3. 스프링 프로젝트(api-gateway) 생성해서 폴더에 넣기
4. build.gradle 확인
5. application.yml 추가

server:
  port: 8080

spring:
  cloud:
    gateway:
      routes:
        - id: account-service
          uri: http://account-service:8081
          predicates:
            - Path=/account/**
        - id: travel-plan-service
          uri: http://travel-plan-service:8082
          predicates:
            - Path=/plan/**
        - id: travel-plan-search-service
          uri: http://travel-plan-search-service:8083
          predicates:
            - Path=/search/**
        - id: travel-discovery-service
          uri: http://travel-discovery-service:8084
          predicates:
            - Path=/discovery/**

  security:
    oauth2:
      resourceserver:
        jwt:
          secret-key: 시크릿키

logging:
  level:
    org.springframework.security: DEBUG

6. 시크릿키 발급

openssl rand -hex 64

위를 터미널에 입력

IntelliJ에서 환경변수 등록

cd api-gateway

./gradlew clean build

해서 실행.(실행해야 run > edit configuration에서 설정 가능?)

 

이런 화면이 나와야되는데 안 나옴. ApiGatewayApplication에 메인 들어있는데 선택이 안 됨 

--> 좌측 상단 File > Project Structure > Modules에서 Sources 탭에 src/main/java가 파란색인지 확인.

    --> 아닌 경우 Source로 등록

 

이렇게 하고(Source로 등록)하고 보니까 에러 엄청 남..

오른쪽에 Gradle 없음. 내 프로젝트를 gradle로 인식 못 함.

api-gateway의 build.gradle 우클릭 > Link Gradle Project 클릭하니 gradle 생김.

 

다시 Run > Edit Configurations

에서 좌측 사이드에서 Add new > Application 클릭,

이제 여기서 환경 변수 등록하기

 

멀티모듈 환경 설정

Tranner_BE_2로 열어서 밑에 모든 모듈의 코드를 한 눈에 볼 수 있도록 멀티 모듈 환경으로 개발하고 싶었다.

 

Tranner_BE_2 하위에 settings.gradle 파일 생성

rootProject.name='Tranner_BE_2'
include 'api-gateway'

이렇게 세팅.

api-gateway의 settings.gradle 파일 삭제.

reload gradle.

 

 


6. spring security 설정
7. dockerfile 작성

FROM openjdk:17-jdk-slim
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]


8. docker-compose 추가

api-gateway:
  build: ./api-gateway
  ports:
    - "8080:8080"
  depends_on:
    - account-service
    - travel-plan-service
    - travel-plan-search-service
    - travel-discovery-service