[์ค์ต] Docker Spring Boot + Postgresql (2)
๊ฐ์ ์ฌํญ ์งํ
1. ๋ณผ๋ฅจ ๋ง์ดํธ์์ ๋๋ ํ ๋ฆฌ ๋ง์ดํธ๋ก ๋ณ๊ฒฝ
2. ์คํ๋ง ๋ถํธ jsp ์ฐพ์ ์ ์๊ฒ ์์
Spring Boot + JSP
1. spring boot jar ๋ฐฐํฌ ํ๊ฒฝ์์ jsp ๊ฒฝ๋ก ๋ฌธ์ ๋๋ฌธ์ war๋ฐฐํฌ๋ก ์์ ์์ (ํด๊ฒฐ๋ฐฉ๋ฒ ์ฐพ์๋ ๊น์ง๋ง)
Dockerfile
FROM adoptopenjdk/openjdk8
EXPOSE 8080:8080
ARG WAR_FILE=build/libs/boot-sample-0.0.1-SNAPSHOT.war
COPY ${WAR_FILE} app.war
ENTRYPOINT [ "java", "-jar", "/app.war" ]
Build ํ run command
docker run -d -p 8080:8080 --network boot-sample-network --name Boot-Sample boot-sample
Postgresql Docker
1. ๋ณผ๋ฅจ ๋ฐ์ธ๋ฉ์์ ๊ฒฝ๋ก ๋ฐ์ธ๋ฉ์ผ๋ก ๋ณ๊ฒฝ.
2. ๋ฐ์ธ๋ฉ ๋ ํด๋๋ฅผ ๊น์ผ๋ก ๊ณต์ ํ๊ณ ์์๋๋ฐ, ๊ณต์ ์ ํน์ ํ์ผ ๋๋ ๊ฒฝ๋ก๋ฅผ ๋ฌด์ํ๋ ํ์ ๋ฐ์. ์ง์ ๋ ๋ฐ์ธ๋ฉ ๊ฒฝ๋ก๋ ์์ถํ์ฌ ๊ณต์ ํ๋ ํํ๋ก ๋ณ๊ฒฝํ์ฌ ๋ฌ๋ํจ.
docker run -d -p 5432:5432 -e POSTGRES_PASSWORD='${password}' -w ${bind๊ฒฝ๋ก} -v ${bind๊ฒฝ๋ก}:/var/lib/postgresql/data --platform linux/amd64 --network boot-sample-network --name Postgresql postgres:12.9-alpine
( ์๋์ฐ์์๋ ํด๋น ์คํฌ๋ฆฝํธ๋ฅผ power shell ์์ ์คํ. ' ๋ฅผ " ๋ก ๋ณ๊ฒฝ, ๊ฒฝ๋ก ๋ฌธ์ ๋ฐ์ ์ ์ํ๋ ๊ฒฝ๋ก ์์นํ์ฌ ${pwd} ๋ณ์ ์ฌ์ฉ )
์ ๋ฌ๋ ์คํฌ๋ฆฝํธ๋ก ๋์ผ Docker Network ์์์ ์คํ ์ ๋ถํธ ํ๋ก์ ํธ์์ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ๊น์ง ๊ฐ๋ฅํ ๊ฒ์ ํ์ธ.
Docker-compose.yml ๋ณํ ์์ ์งํ
1. Postgresql ๊ณผ Spring Boot๋ฅผ ์๋น์ค๋ก ๋ฌถ์ด์ ์คํํ๊ธฐ.
version: "3.7"
services:
app:
# Dockerfile - FROM
image: adoptopenjdk/openjdk8
# Dockerfile - EXPOSE
ports:
- 8080:8080
# image build dir
build:
context: .
# Dockerfile - ARG
args:
WAR-FILE: build/libs/boot-sample-0.0.1-SNAPSHOT.war
# Dockerfile - ENTRYPOINT
entrypoint:
- java
- '-jar'
- /app.war
# Dockerfile - COPY command
command: 'COPY ${WAR_FILE} app.war'
# link : ์ฐธ์กฐํ ๋ค๋ฅธ ์ปจํ
์ด๋ ์ฐ๊ฒฐ - application.yml ๋ด DB ์ฐ๊ฒฐ ๋ค์ด๋ฐ ์ฐธ๊ณ .
links:
- db:Postgresql
# ์ข
์์ฑ ์ ์. ์ฌ๊ธฐ์์ db ์คํ ํ์ app ์คํํจ์ ์๋ฏธ.
depends_on:
- db
db:
# DB ์ด๋ฏธ์ง
image: postgres:12.9-alpine
# ํฌํธ ์ง์
ports:
- 5432:5432
# -e ํ๊ฒฝ ๋ณ์ : docker run ๋ช
๋ น ์ฐธ๊ณ
environment:
- POSTGRES_PASSWORD=${password}
# ๋ณผ๋ฅจ ์ง์ : ๋๋ ํ ๋ฆฌ ๋ง์ดํ
volumes:
- ${bind-dir}:/var/lib/postgresql/data
# Docker Network : ๋ฏธ๋ฆฌ ์์ฑ๋ ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์
networks:
default:
external:
name: boot-sample-network
์ดํ Docker Compose ์คํ
docker-compose up -d
ํ์ธ์์ - ๋ฌ๋ OK
spring boot ํ์ธ - OK
2์ฐจ ๊ฐ์ ์ฌํญ
1. docker compose ์์ ํ๊ฒฝ ๋ณ (๊ฐ๋ฐ/์ด์) ๋ก ๋๋์ด ๊ฐ๋ฐ์์๋ docker network ์ฌ์ฉ, ์ด์์์๋ Server to Server ํต์ ์ ํ ์ ์๊ฒ๋ ๋น๋ ๊ตฌ๋ถํ๊ธฐ.
2. docker compose ์์ ๋คํธ์ํฌ ์ง์ ๊ด๋ จ ์ต์ ์ฐพ์๋ณด๊ธฐ (๋ฏธ๋ฆฌ ์์ฑ๋ ๋คํธ์ํฌ ๋ง๊ณ , ๋ค๋ฅธ ๋ฐฉ์์ด ์๋์ง)