BankSystem, 2022년 1월 19일

yshjft·2022년 1월 19일
0

Bank System

목록 보기
9/14

배포 준비

spring boot 설정 파일(application.yml) 환경에 따른 분리

환경(개발 환경 OR 배포 환경)에 따라 다른 설정 값이 필요하였기에 spring boot 설정 파일을 profile을 사용하여 다음과 같이 분리하였다.

  • application.yml: for 프로파일 설정
  • application-dev.yml: for 개발 환경 with docker
  • application-local.yml: for 개발 환경
  • application-prod.yml: for 배포 환경

프로파일을 적용하는 방법은 다음과 같다.

  • 직접 작성 OR IDE 사용(우선 순위가 높다)

    • 직접 작성
      java -Dspring.profile.active={원하는 프로파일} -jar {jarfile}

    • IDE(at Intellij)
      Run/Debug Configurations → Active profiles에 원하는 프로파일 입력

  • 설정 파일 이용
spring:
  profiles:
    active: 원하는 프로파일

spring.jpa.hibernate.ddl-auto

배포시에는 none으로 설정하자! create을 사요하면 어플리케이션이 실행될 때마다 데이터베이스가 초기화되는 경험을 하게될 것이다.

도커라이징

어플리케이션도 docker 컨테이너로 띄우고 어플리케이션의 세션 저장소로 사용될 redis도 docker로 띄운다. 따라서 컨테이너간 통신이 필요한 상황이기에 docker-compose 파일을 사용하였다.

이해 못하는 상황들....

앞으로 나오는 문제들은 구글링을 통해 해결했으나 아직 정확히 이유를 파악하지 못한 상황이다. 더 공부해본 후 내용을 추가해야겠다.

상황1) H2 데이터베이스

백엔드 어플리케인션은 컨테이너로 띄우고 H2 데이터베이스는 로컬(도커 사용 안함. 직접 설치하여 사용)에 띄워져 있다.

datasource:
    url: jdbc:h2:tcp://localhost/~/bankSystem
    username: sa
    password:
    driver-class-name: org.h2.Driver

위와 같이 설정할 때 connection이 이루어 지지 않았으나

datasource:
    url: jdbc:h2:tcp://{h2 실행시 브라우저에 나타나는 IP 주소}/~/bankSystem
    username: sa
    password:
    driver-class-name: org.h2.Driver

위와 같이 수정하니 connection이 이루어졌다.
(🤨 왜지 ?)

상황2) 설정 파일 변경

docker-compose파일을 이용하여 필요한 컨테이너들을 뜨위고 h2 데이터베이스도 잘 연결 되었으나 이번에는 백엔드 어플리케이션에서 redis에 연결이 안이루어졌다. 따라서 아래를

redis:
    host: localhost
    port: 6379
    password:

아래와 같이 변경하여 해당 문제를 해결하였다.

redis:
    host: redis_dev #docker-compse에서 설정한 컨테이너 이름
    port: 6379
    password:

아래는 사용한 docker-compose.yml 파일이다.

version: "3"

services:
  redis_dev:
    image: redis
    ports:
      - "6379:6379"
  bank_system_dev:
    build:
      dockerfile: Dockerfile.dev
      context: .
    ports:
      - "8080:8080"
    depends_on:
      - redis_dev

😲 depends_on은 컨테이너가 의존하고 있어 먼저 실행되야하는 컨테이너를 설정하는 부분이다.

profile
꾸준히 나아가자 🐢

0개의 댓글