What to do?
프로젝트 환경설정
Docker를 활용해 다중 컨테이너 환경을 구성해보자.
application.yaml 파일 만들기
프로젝트 관련된 세팅은 application.yaml에서 해주면 된다.
원래는 application.properties라는 파일이 있는데, 확장자를 yaml로 변경해주자
파일명 변경시에는 Shift + F6버튼을 누르면 된다.
Profile 작성하기
dev(개발환경), prod(배포환경)이라는 두개의 개발환경을 만들고,
공통적으로 적용되는 내용은 common에서 정의해주기로 하자.
spring:
profiles:
active: dev # default 환경
group:
dev:
- common
prod:
- common
---
# dev, prod 환경에서 공통적인 내용
spring:
config:
active:
on-profile: common
---
# dev 환경에서 적용되는 내용
spring:
config:
active:
on-profile: dev
---
# prod 환경에서 적용되는 내용
spring:
config:
active:
on-profile: prod
프로젝트를 실행시켜보면 dev와 common이라는 이름의 profile이 실행된다는 로그를 볼 수 있다.
Redis docker파일
캐시 기능을 사용하기 위해서 Redis를 사용할 것이다
FROM redis:6
ENV TZ=Asia/Seoul
maria DB docker파일
- maria DB dockerfile
데이터베이스는 maria DB를 사용할 것이다.
FROM mariadb:10
ENV TZ=Asia/Seoul
- maridb.cnf
한글이 깨지는걸 방지하기 위한 설정을 넣어주었다.
[client]
default-character-set=utf8mb4
[mysql]
default-character-set=utf8mb4
[mysqld]
default-character-set=utf8mb4
collation-server=utf8mb4_unicode_ci
skip-character-set-client-handshake
[mysqldump]
default-character-set=utf8mb4
환경변수
환경변수로 사용할 값들을 .env라는 파일에 정의해주자.
도커 컨테이너가 실행될 때 마다 .env에 있는 정보가 자동으로 주입된다.
프로젝트에서는 데이터 베이스에 접근하기 위해 필요한 유저명과 비밀번호는 환경변수로 해두었다.
SPRING_DATASOURCE_USERNAME=root
SPRING_DATABASE_PASSWORD=1221
.env에서 정의한 내용들이 외부로 유출되면 안된다.
그래서 github에 push할 때 .env파일은 안 올라가도록 해주어야 한다.
이러한 설정은 .gitignore파일에서 정의하면 된다.
Docker Compose
위에서 redis, maria db dockerfile을 작성하였다.
각 도커 컨테이너의 라이프사이클을 만져주려면 docker-compose 파일을 작성해주어야 한다.
개발환경에서 사용할 docker-compose파일이라서 docker-compose-dev.yaml라고 작명해었다.
docker compose 실행하기
docker-compose -f [도커 compose파일] up
CMD에서 docker ps 명령어로 현재 실행중인 컨테이너를 출력해보았다.
그럼 Maria DB와 redis 컨테이너가 실행되고 있는 모습을 볼 수 있다.
반대로 지금 도커 컨테이너를 삭제하려면 up을 down으로 바꿔서 명령어를 적어주면 된다.
Profile 수정
- build.gradle
JPA와 Maria DB connector 의존성을 추가해주자.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
runtimeOnly 'org.mariadb.jdbc:mariadb-java-client'
- application.yaml
dev 환경에서 DB 와 관련된 설정들을 추가해주었다.
# dev
spring:
config:
activate:
on-profile: dev
datasource:
driver-class-name: org.mariadb.jdbc.Driver
url: jdbc:mariadb://localhost:3306/compass
username: ${SPRING_DATASOURCE_USERNAME}
password: ${SPRING_DATASOURCE_PASSWORD}
redis:
host: localhost
port: 6379
jpa:
hibernate:
ddl-auto: create
show-sql: true
- Edit Configuration
.env 파일에 있는 정보는 도커 컨테이너가 실행될 때 주입되기 된다.
그래서 intellj에서 Spring만 실행시킬 때는 SPRING_DATASOURCE_USERNAME이나 SPRING_DATASOURCE_PASSWORD 같은 환경변수를 주입받을 수 없다.
이 경우에는 IntellJ에서 직접 환경변수를 주입해주면 된다.
오른쪽 상단에 Edit Configurations 메뉴를 클릭하자
한번 DB연결이 잘 되는지 Test Connection을 연결해보면 잘 된다.
docker 컨테이너를 실행시키고(Maria DB, Redis)
Spring 앱을 실행시켰을 때도 잘 돌아간다
환경설정이 잘 된듯하다.
내일부터는 코딩을 시작해도 될거 같다.
'Java > Spring' 카테고리의 다른 글
[Spring] 게시판 만들기 #1 (0) | 2022.11.07 |
---|---|
[Spring] 길찾기 서비스 #4 (0) | 2022.11.06 |
[Spring] 길찾기 서비스 #2 (0) | 2022.11.05 |
[Spring] 길찾기 서비스 #1 (0) | 2022.11.05 |
[Spring] 길찾기 서비스 #0 (0) | 2022.11.05 |