๐Ÿ“Œ Docker๋กœ ํ’€์Šคํƒ ํ™˜๊ฒฝ ์™„์ „ ๊ตฌ์ถ•ํ•˜๊ธฐ โ€“ 3ํŽธ: Spring Boot & React ํ”„๋กœ์ ํŠธ Dockerfile ๊ตฌ์„ฑ

My Pale Blue Dotยท2025๋…„ 6์›” 2์ผ
0

DOCKER

๋ชฉ๋ก ๋ณด๊ธฐ
3/8
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-06-02

๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ

โœ… ์ „์ฒด ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ/
โ”œโ”€โ”€ FN/           # React (Frontend)
โ”œโ”€โ”€ BN/           # Spring Boot (Backend)
โ”œโ”€โ”€ DB/           # MySQL
โ””โ”€โ”€ REDIS/        # Redis

๊ฐ ๋””๋ ‰ํ† ๋ฆฌ์—๋Š” ํ•ด๋‹น ์„œ๋น„์Šค์— ๋งž๋Š” Dockerfile์„ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.


1๏ธโƒฃ BN - Spring Boot (Gradle ๊ธฐ๋ฐ˜)

๐Ÿ”ง Dockerfile

FROM gradle:8.4-jdk21 AS build
WORKDIR /app
COPY . .
RUN chmod +x ./gradlew
RUN ./gradlew build --no-daemon -x test

FROM eclipse-temurin:21-jdk-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar
EXPOSE 8090
CMD ["java", "-jar", "app.jar"]

๐Ÿ” ํŠน์ง•

  • ๋ฉ€ํ‹ฐ ์Šคํ…Œ์ด์ง€ ๋นŒ๋“œ: Gradle๋กœ ๋นŒ๋“œ ํ›„, ์‹คํ–‰ ์ด๋ฏธ์ง€๋Š” ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€
  • ํฌํŠธ 8090 ์‚ฌ์šฉ
  • gradlew ๊ถŒํ•œ ๋ฌธ์ œ ์ฃผ์˜ (๊ถŒํ•œ ๋ถ€์—ฌ ํ•„์š”)

2๏ธโƒฃ FN - React (Nginx ๊ธฐ๋ฐ˜ ์ •์  ๋ฐฐํฌ)

๐Ÿ”ง Dockerfile

FROM node:20-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=build /app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

๐Ÿ” ํŠน์ง•

  • Node ํ™˜๊ฒฝ์—์„œ ๋นŒ๋“œ ํ›„, Nginx๋กœ ์ •์  ํŒŒ์ผ ์„œ๋น™
  • ํฌํŠธ 80 ์‚ฌ์šฉ
  • .env ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฐ ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ ์„ค์ •์€ nginx.conf๋กœ ํ™•์žฅ ๊ฐ€๋Šฅ

3๏ธโƒฃ DB - MySQL (์ดˆ๊ธฐ ์„ค์ • ํฌํ•จ)

๐Ÿ”ง Dockerfile

FROM mysql:8.0
ENV MYSQL_ROOT_PASSWORD=Zhfldk11!
ENV MYSQL_DATABASE=bookdb
ENV MYSQL_USER=dbconn
ENV MYSQL_PASSWORD=Zhfldk11!
EXPOSE 3306
CMD ["mysqld"]

๐Ÿ” ํŠน์ง•

  • MySQL 8.0 ๊ธฐ๋ฐ˜ ์ด๋ฏธ์ง€ ์‚ฌ์šฉ
  • ์ดˆ๊ธฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์‚ฌ์šฉ์ž ์ž๋™ ์ƒ์„ฑ
  • ํฌํŠธ 3306 ๋…ธ์ถœ

4๏ธโƒฃ REDIS - ์บ์‹œ ์„œ๋ฒ„

๐Ÿ”ง Dockerfile

FROM redis:latest
WORKDIR /usr/local/etc/redis
EXPOSE 6379
CMD ["redis-server"]

๐Ÿ” ํŠน์ง•

  • ๋ณ„๋„ ์„ค์ • ์—†์ด ๊ธฐ๋ณธ Redis ์‹คํ–‰ ๊ฐ€๋Šฅ
  • ํฌํŠธ 6379 ๋…ธ์ถœ
  • redis.conf ์‚ฌ์šฉ ์‹œ COPY ๊ฐ€๋Šฅ

๐Ÿ”ฅ ์ •๋ฆฌ

๊ฐ๊ฐ์˜ ์„œ๋น„์Šค(FN, BN, DB, REDIS)๋Š” Dockerfile์„ ํ†ตํ•ด ๋…๋ฆฝ์ ์œผ๋กœ ๋นŒ๋“œ ๋ฐ ์‹คํ–‰๋˜๋ฉฐ, ๋ฉ€ํ‹ฐ ์ปจํ…Œ์ด๋„ˆ ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ์ดˆ์„์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ํŽธ์—์„œ๋Š” ์ด ์ปจํ…Œ์ด๋„ˆ๋“ค์„ ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ๋กœ ์—ฐ๊ฒฐํ•˜๊ณ  ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ณผ์ •์„ ๋‹ค๋ฃจ๊ฒ ์Šต๋‹ˆ๋‹ค.


๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€