๐Ÿ”ŒDocker

[์‹ค์Šต] Docker Spring Boot + Postgresql (2)

harry.93 2022. 1. 24. 18:03
๋ฐ˜์‘ํ˜•

๊ฐœ์„ ์‚ฌํ•ญ ์ง„ํ–‰

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 ์—์„œ ๋„คํŠธ์›Œํฌ ์ง€์ • ๊ด€๋ จ ์˜ต์…˜ ์ฐพ์•„๋ณด๊ธฐ (๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ ๋„คํŠธ์›Œํฌ ๋ง๊ณ , ๋‹ค๋ฅธ ๋ฐฉ์‹์ด ์žˆ๋Š”์ง€)

 

 

 

728x90
๋ฐ˜์‘ํ˜•