[SpringBoot] 개발환경 및 배포환경 yml 파일 나누기

Kwon·2024년 11월 12일

스프링부트

목록 보기
11/12

개발환경 및 배포환경 yml 파일 나누기

1. 왜 나누려 했을까?

1) 배포 환경

  • 배포될 환경은 DB가 지속적으로 데이터를 받아야할 상황
  • 또한 배포되는 환경의 DB 정보가 따로 있음
    - DB: aisjam
  • 로컬에서 프로젝트 환경은 DB 갈아 엎거나 지속적으로 데이터를 받거나 유동적인 상황
  • DB는 배포될 환경과 다름
    - DB: aissample

2. 내용

application-prod.yml

server:
  port: 8080

spring:
    thymeleaf:
        prefix: "classpath:templates/"
        suffix: ".html"
    datasource:
        url: jdbc:postgresql://183.107.106.241:40010/aisjam
        username: ajsjam_user1
        password: 
        driver-class-name: org.postgresql.Driver
    jpa:
        hibernate:
            ddl-auto: update
        show-sql: true
        properties:
            hibernate:
                dialect: org.hibernate.dialect.PostgreSQLDialect
mybatis:
    mapper-locations: classpath:mapper/*.xml
    # configuration:
    #     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

application-test.yml

server:
  port: 8080

spring:
    thymeleaf:
        prefix: "classpath:templates/"
        suffix: ".html"
    datasource:
        url: jdbc:postgresql://192.168.0.219:21901/aissample
        username: bukwon
        password: 
        driver-class-name: org.postgresql.Driver
    # 테스트용
    jpa:
        hibernate:
            ddl-auto: create
        show-sql: true
        properties:
            hibernate:
                dialect: org.hibernate.dialect.PostgreSQLDialect
mybatis:
    mapper-locations: classpath:mapper/*.xml
    # configuration:
    #     log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  • 배포될 환경과 로컬에서의 설정을 나눔

3. 어떻게 처리할까

application.yml

spring:
    profiles:
        active: test
  • 로컬에선 test파일을 운용할 수 있도록 설정

gitaction.yml

    - name: Build with Maven
      run: mvn -B package --file pom.xml -Dspring.profiles.active=prod
      
  ... 다른 내용들 ...
  
  - name: Load and run Docker container on remote server
      run: |
        ssh -p 50022 ${{ secrets.SSH_USER }}@${{ secrets.SERVER_IP }} "
          docker load -i /home/bluemap/dev2/dev2-aisjam/aisjam-image.tar &&
          docker stop dev2-aisjam || true &&
          docker rm dev2-aisjam || true &&
          docker run -d -p 20210:8080 --name dev2-aisjam -e SPRING_PROFILES_ACTIVE=prod aisjam-image
        "
  • 배포할 환경에선 깃허브액션을 통해 배포가 되므로 깃액션의 파일을 위와 같이 프로파일 설정함으로써 로컬과 배포 환경을 나눔
  • 깃허브액션 파일은 자바 파일과 도커에서 prod yml이 운용될 수 있도록 따로 설정
profile
📲 @bu_kwon_2 / 💻 dnu05043.log / ⌨ Back-end / 🦁 LikeLion

0개의 댓글