Springboot Dockerfile & docker-compose.yml
๋ฐฐํฌ ๊ณผ์ ์ ๋ํ ์์ธํ ์ค๋ช ์ ์ด์ ๊ธ ์ฐธ๊ณ ! https://bluuubery.tistory.com/206
๋ณธ ๊ธ์ dockerfile๊ณผ docker-compose.yml ํ์ผ๊ณผ ์ค๋ช ๋ง ์ ์๋ค.
Dockerfile
# ์คํ
์ด์ง 1 (๋น๋)
# ๋ฒ ์ด์ค ์ด๋ฏธ์ง: jdk 11 alpine(๊ฒฝ๋)
FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine AS builder
# ์์
๊ฒฝ๋ก ์ค์ ๋ฐ ํ๋ก์ ํธ ๊ฐ์ ธ์ค๊ธฐ
WORKDIR /app
COPY . .
# ๋น๋ ๊ถํ ๋ถ์ฌ ๋ฐ ์คํ(ํด๋ฆฐ)
RUN chmod +x ./gradlew
RUN ./gradlew clean bootJar
# ์คํ
์ด์ง 2
# ๋ฒ ์ด์ค ์ด๋ฏธ์ง: jdk 11 alpine(๊ฒฝ๋)
FROM adoptopenjdk/openjdk11:jdk-11.0.10_9-alpine
# ๋น๋ ์คํ
์ด์ง์์ ๋น๋ํ jar ํ์ผ ๊ฐ์ ธ์ค๊ธฐ
COPY --from=builder /app/build/libs/*.jar app.jar
# 8080ํฌํธ๋ก ์คํ
EXPOSE 8080
ENTRYPOINT ["java", "-jar","/app.jar"]
โ ./gradlew
๋ฅผ ํ์ฉํ ๋ฉํฐ์คํ
์ด์ง ๋น๋๋ก ํฐ ํน์ด ์ฌํญ์ ์๋ค
CMD vs ENTRYPOINT
โ ๋ ๋ค ๋น๋ ํ ์ปจํ ์ด๋ ์ต์ ์คํ ๋จ๊ณ์์ ์คํ๋๋ ๋ช ๋ น์ด๋ผ๋ ์ ์์๋ ๋์ผํ๋ค
โ ENTRYPOINT
๊ฐ์ ๊ฒฝ์ฐ์๋ ํญ์ ์คํ๋๋ ๋ฐ๋ฉด CMD
์ ๊ฒฝ์ฐ๋ ๋์ปค ์คํ ์ ๋ช
๋ น์ด๋ก ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ค
โ ๊ผญ ์คํ๋์ด์ผ๋๋ ๋ช
๋ น์ด์ ๊ฒฝ์ฐ์๋ ENTRYPOINT
๋ฅผ ํ์ฉํ์
docker-compose.yml
version: "3.7"
services:
springboot:
container_name: springboot
build:
context: .
dockerfile: ./Dockerfile
ports:
- "8080:8080"
environment:
SERVER_MODE: prod
AWS_ACCESS_KEY: "${AWS_ACCESS_KEY}"
AWS_SECRET_KEY: "${AWS_SECRET_KEY}"
JWT_SECRET_KEY: "${JWT_SECRET_KEY}"
โ environment๋ฅผ ํตํด์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฝ๊ฒ ์ค์ ํด์ค ์ ์๋ค
๋๊ธ