안녕하세요.
Docker와 Docker compose는 개발을 하다 언젠가 쓰게 됩니다,.
한 번 쓰면 너무 편해서 이전으로 돌아가기 힘든 것 같습니다.
저는 처음에 Docker에 대한 개념도 잘 몰랐고, 왜 쓰는지에 대해도 몰랐습니다.
따라서 이번 글을 보시고 프로젝트에 적용하시기 전에 도커에 대한 개념은 유튜브나 다른 블로그 포스팅을 보고 참고하고 보시는 것을 추천드립니다.
처음에 저 같은 경우는 도커 세팅에 관한 글은 많지만, 실제로 너무 두루뭉실한 얘기들이 많아서 따라하기가 너무 힘들었습니다.
그래서 노드 개발하는 친구에게 많이 물어보고 귀찮게 했습니다.
오늘 글을 통해서 우리가 배워볼 건 다음과 같습니다.
- Docker, Docker-compose, .env 민감 정보 감추기, yml 설정하기
- 서버 띄워보기
Docker, Docker-compose, .env 파일을 이용해 민감 정보 감추기, application 파일 설정하기
먼저 Docker, Docker-compose.yml 파일을 세팅해줘야합니다.
이 파일들의 위치는 프로젝트 최상단 폴더에 위치합니다. (사진 참조)
먼저 Dockerfile부터 설정해주겠습니다.
FROM openjdk:11
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
위와 같이 해주시면 되는데, 주의할 점은 openjdk 부분은 자신 버전과 맞는 jdk를 적어주셔야합니다.
보통 프로젝트를 빌드하게 되면 /build/libs 디렉토리에 .jar 파일이 생기게 됩니다.
Dockerfile은 이를 캐치해주는 역할을 합니다.
docker-compose.yml 파일을 설정해주겠습니다.
version: '3.8'
services:
mysqldb:
image: mysql
restart: always
environment:
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
ports:
- 3306:3306
redis:
image: redis
ports:
- 6379:6379
backend:
build: .
restart: always
environment:
SPRING_DATASOURCE_URL: ${SPRING_DATASOURCE_URL}
SPRING_DATASOURCE_USERNAME: ${SPRING_DATASOURCE_USERNAME}
SPRING_DATASOURCE_PASSWORD: ${SPRING_DATASOURCE_PASSWORD}
ports:
- 8080:8080
depends_on:
- mysqldb
- redis
저는 mysql, redis, 서버 총 3개를 돌리기 때문에 위와 같이 설정했습니다.
만약에 redis를 안 쓰신다면 redis부분만 쭉 지워주시면 됩니다.
반대로 추가하고 싶으시다면, 추가 해주시면 됩니다.
그리고 데이터를 감추었는데, 이는 .env 파일을 통해 세팅이 가능합니다.
MYSQL_DATABASE=디비명
MYSQL_ROOT_PASSWORD=디비패스워드
SPRING_DATASOURCE_URL=jdbc:mysql://mysqldb:3306/디비명
SPRING_DATASOURCE_USERNAME=db유저네임
SPRING_DATASOURCE_PASSWORD=디비패스워드
위와 같이 .env 파일에 설정을 자신 프로젝트에 맞게 해주시면 됩니다.
여기까지 하셨다면 기존 데이터베이스와 연결한 application 파일을 고쳐주면 됩니다.
이 게시글에서 저는 properties가 아닌 yml 확장자를 사용합니다.
appllication.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/디비이름적어주세요?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true
username: 아이디
password: 패스워드
driver-class-name: com.mysql.cj.jdbc.Driver
redis:
host: localhost
port: 6379
jpa:
hibernate:
ddl-auto: update
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
use-new-id-generator-mappings: false
database: mysql
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
properties:
hibernate:
show_sql: true
format_sql: true
#use_sql_comments: true
mvc:
pathmatch:
matching-strategy: ant_path_matcher # about swagger
위와 같이 설정해주시면 됩니다.
참고로 저는 profile 속성을 이용해서 더 관리하게 편하게 만들었습니다.
이에 대한 내용은 아래 포스팅 참고해주시면 됩니다.
https://blog.naver.com/sosow0212/222922713513
'Develop > Spring Framework' 카테고리의 다른 글
도커를 이용해서 Redis 사용 및 스프링 프로젝트에 적용하기 (0) | 2022.11.16 |
---|---|
스프링에서 properties 파일을 통해 민감 정보 감추는 방법 (2) | 2022.11.07 |