사실 안쉬움
뭔가 가상환경 속에서 커맨드만을 이용해 예측하는 기분이 들었습니다.
이전 도커 파일에선 하나의 이미지만을 빌드 후 실행했다면, 이번에는 두 이미지 (스프링 + PostgreSql)를 도커로 합쳐서 한 컨테이너에 띄우는 작업을 진행합니다.
우선 기존 도커파일은 그대로 유지합니다.
FROM openjdk:18-ea-jdk-slim
VOLUME /tmp
COPY build/libs/demo-0.0.1-SNAPSHOT.jar codingtest-service.jar
ENTRYPOINT ["java","-jar","codingtest-service.jar"]
이제 docker-compose.yml 파일을 dockerfile과 동일한 위치에 생성합니다.
(사실 Docker 쪽만 다룬 폴더를 만들수 있으나, 상대경로 설정에 불편하기에.. 그냥 최상위 폴더에 둡니다)
그리고 만든 docker-compose.yml 파일에 다음을 적어줍니다.
version: '2'
services:
app:
build: .
ports:
- "8080:8080"
container_name: app
depends_on:
- db
db:
image: 'postgres:13.1-alpine'
container_name: "db"
environment:
POSTGRES_DB: test1
POSTGRES_USER: test
POSTGRES_PASSWORD: test
app은 우리가 실행하고자 하는 springboot 환경이고, 기존에 dockerfile 이미지를 실행할때 port를 설정해줬는데요.
여기선 ports를 통해 미리 설정해줍니다.
depends_on이 중요한 코드인데
아래 설정한 db라는 컨테이너가 실행이 되야 app을 실행하라는 순서를 의미합니다.
만약 DB컨테이너 선 생성 없이 springboot를 "먼저" 실행한다면 아마도 다음과 같은 에러 코드와 마주할 것입니다
다음은 application.yml 파일입니다.
spring:
application:
name:
demo
jpa:
generate-ddl: 'true'
hibernate:
ddl-auto: create
properties:
hibernate:
# show_sql: true
format_sql: true
use_sql_comments: true # sql 과 함께 jpql 주석처리되어 콘솔창에 출력
datasource:
url: jdbc:postgresql://db:5432/test1
username: test
password: test
driver-cname-name: org.postgresql.Driver
(Gradle에 의존성은 모두 설치했다고 가정하고 진행합니다.)
jpa설정은 기본적으로 실행시의 환경 설정을 설정한 것입니다.
우리가 주의깊게 봐야하는건 datasource 하위 설정인데요.
앞서 compose.yml에서 봤던 내용과 유사한 내용들이 많습니다.
url -> 접속할 db의 위치 'db':는 우리가 앞서 설정한 이름이고, 5432는 postgresql의 기본 실행 포트입니다. 마지막으로 'test1'은 DB의 이름이죠
username, password 역시 db에 접근할 때 사용할 이름으로 yml에 그대로 작성했음을 알 수 있습니다.
이러한 설정을 바탕으로 먼저 만들어진 DB 컨테이너에 스프링에서 접근이 가능해집니다.
docker-compose up --build
Command 입력결과
우선적으로 dockerfile 바탕으로한 빌드작업 수행하여 이미지 생성
-> docker-compose.yml 설정에 기반한 DB 생성
-> 우선 생성한 스프링 이미지 이후 실행
엔티티와 JPA를 활용한 코드를 통해 DB에 데이터가 잘 저장되는지 확인하는 로직은 각자 작성해보시길..
'스프링' 카테고리의 다른 글
Spring Security 기술로 인증/인가 커스텀하기 (0) | 2024.08.25 |
---|---|
스프링과 JWT(Json Web Token) 기술을 이용한 인증과 인가 구현 (0) | 2024.08.06 |
<인프런> 실전! 스프링 부트와 JPA 활용1 - 새로이 배운 것 (0) | 2024.07.18 |
[Docker] 도커를 이용한 스프링 부트 배포 (0) | 2024.05.28 |
자바 스프링, 알고 쓰자 (0) | 2024.03.30 |