From 99ce5a90124986655b6eb443843ca201d0d270d1 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Mon, 24 Feb 2025 09:26:35 +0900 Subject: [PATCH 1/7] [Fix] : backend Dockerfile --- backend/Dockerfile | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index 0fc23e4..6a9c97d 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,13 +1,25 @@ -FROM azul/zulu-openjdk:17 -LABEL authors="eunhwa" +# FROM azul/zulu-openjdk:17 +# LABEL authors="eunhwa" -ARG JAR_FILE=build/libs/*.jar -COPY ${JAR_FILE} app.jar +# ARG JAR_FILE=build/libs/*.jar +# COPY ${JAR_FILE} app.jar -ENTRYPOINT ["java" , "-jar", "/app.jar"] +# ENTRYPOINT ["java" , "-jar", "/app.jar"] -RUN \ - apt-get update && \ - apt-get install -y vim \ +# RUN \ +# apt-get update && \ +# apt-get install -y vim \ + +FROM ghcr.io/graalvm/jdk-community:17 as builder +WORKDIR /app +COPY . . +RUN gu install native-image +RUN ./gradlew build + +FROM gcr.io/distroless/base +COPY --from=builder /app/build/native/nativeCompile/lightswitch . +EXPOSE 8080 + +CMD ["./lightswitch"] \ No newline at end of file From f0b34134b4d275feb824d9317c945a13ffb2e565 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Mon, 24 Feb 2025 09:27:14 +0900 Subject: [PATCH 2/7] [Add] : Frontend Dockerfile & nginx configuration --- frontend/Dockerfile | 30 ++++++++++++++++++++++++++++++ frontend/nginx/default.conf | 17 +++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 frontend/Dockerfile create mode 100644 frontend/nginx/default.conf diff --git a/frontend/Dockerfile b/frontend/Dockerfile new file mode 100644 index 0000000..d1494e2 --- /dev/null +++ b/frontend/Dockerfile @@ -0,0 +1,30 @@ +FROM node:20 AS builder +WORKDIR /app + +# Install PNPM +RUN corepack enable && corepack prepare pnpm@9.15.4 --activate + +# use dependency cache with using package.json& pnpm-lock.yaml +COPY package.json pnpm-lock.yaml ./ +RUN pnpm install --frozen-lockfile + +COPY . . +RUN pnpm build + +# Nginx로 정적 파일 서빙 +FROM nginx:1.25 + +WORKDIR /usr/share/nginx/html +COPY --from=builder /app/.next/static ./static +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next/BUILD_ID . +COPY --from=builder /app/.next/routes-manifest.json . +COPY --from=builder /app/.next/export-marker.json . +COPY --from=builder /app/.next/prerender-manifest.json . + +# Nginx 설정 복사 +COPY nginx/default.conf /etc/nginx/conf.d/default.conf + +# 80 포트에서 실행 +EXPOSE 80 +CMD ["nginx", "-g", "daemon off;"] diff --git a/frontend/nginx/default.conf b/frontend/nginx/default.conf new file mode 100644 index 0000000..859034a --- /dev/null +++ b/frontend/nginx/default.conf @@ -0,0 +1,17 @@ +server { + listen 80; + server_name _; + + location / { + root /usr/share/nginx/html; + index index.html; + try_files $uri /index.html; + } + + location /api/ { + proxy_pass http://localhost:8080/api/; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } +} From 09246f50b3cfb13c4ce89a40e7073a7cea5f4083 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Mon, 24 Feb 2025 09:32:08 +0900 Subject: [PATCH 3/7] [Add] : Add docker compose yaml file --- docker-compose.yml | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5599679 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,45 @@ +version: "3.8" + +services: + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + container_name: lightswitch-frontend + restart: always + ports: + - "80:80" + networks: + - lightswitch-network + depends_on: + - backend + + backend: + build: + context: ./backend + dockerfile: Dockerfile + container_name: lightswitch-backend + restart: always + ports: + - "8080:8080" + networks: + - lightswitch-network + environment: + - SPRING_DATASOURCE_URL="jdbc:sqlite:/data/lightswitch.db" + depends_on: + - database + + database: + image: nouchka/sqlite3:latest + container_name: lightswitch_db + restart: always + volumes: + - sqlite_data:/data + networks: + - lightswitch_network + +networks: + lightswitch_network: + +volumes: + sqlite_data: From 66c7b2ef0cfc6a933206c524d26585ec436e4b52 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Mon, 24 Feb 2025 09:57:35 +0900 Subject: [PATCH 4/7] [Fix] : wrong network name --- docker-compose.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5599679..ce0c7a3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -36,10 +36,10 @@ services: volumes: - sqlite_data:/data networks: - - lightswitch_network + - lightswitch-network networks: - lightswitch_network: + lightswitch-network: volumes: sqlite_data: From 428a7134aceacd1cdf063cc0653b07b13162b548 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Thu, 27 Feb 2025 10:29:11 +0900 Subject: [PATCH 5/7] [Fix] : fix Docker build process --- backend/.dockerignore | 6 ++++++ backend/Dockerfile | 32 ++++++++++++++++++-------------- docker-compose.yml | 22 +++++++++++++++------- frontend/.dockerignore | 3 +++ frontend/Dockerfile | 6 +++--- 5 files changed, 45 insertions(+), 24 deletions(-) create mode 100644 backend/.dockerignore create mode 100644 frontend/.dockerignore diff --git a/backend/.dockerignore b/backend/.dockerignore new file mode 100644 index 0000000..f3e29ca --- /dev/null +++ b/backend/.dockerignore @@ -0,0 +1,6 @@ +.idea/ +*.iml +*.iws +target/ +.sonar/ +.sonarlint/ \ No newline at end of file diff --git a/backend/Dockerfile b/backend/Dockerfile index 6a9c97d..c5bea97 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,25 +1,29 @@ -# FROM azul/zulu-openjdk:17 -# LABEL authors="eunhwa" +FROM azul/zulu-openjdk:17 +LABEL authors="eunhwa" -# ARG JAR_FILE=build/libs/*.jar -# COPY ${JAR_FILE} app.jar +ARG JAR_FILE=build/libs/*.jar +COPY ${JAR_FILE} app.jar +# SQLite 데이터베이스 파일이 존재하는 /data 디렉터리를 생성 +RUN mkdir -p /data -# ENTRYPOINT ["java" , "-jar", "/app.jar"] +ENTRYPOINT ["java" , "-jar", "/app.jar"] # RUN \ # apt-get update && \ # apt-get install -y vim \ -FROM ghcr.io/graalvm/jdk-community:17 as builder -WORKDIR /app -COPY . . -RUN gu install native-image -RUN ./gradlew build +# FROM ghcr.io/graalvm/jdk:ol8-java17 as builder + +# WORKDIR /app +# COPY ./ /app + +# RUN chmod +x gradlew +# RUN ./gradlew clean build -FROM gcr.io/distroless/base -COPY --from=builder /app/build/native/nativeCompile/lightswitch . -EXPOSE 8080 +# ARG JAR_FILE=./build/libs/*.jar + +# COPY ${JAR_FILE} app.jar -CMD ["./lightswitch"] \ No newline at end of file +# ENTRYPOINT ["java","-jar","app.jar"] \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index ce0c7a3..855954a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,5 +1,3 @@ -version: "3.8" - services: frontend: build: @@ -19,24 +17,34 @@ services: context: ./backend dockerfile: Dockerfile container_name: lightswitch-backend - restart: always + # restart: always ports: - "8080:8080" networks: - lightswitch-network environment: - - SPRING_DATASOURCE_URL="jdbc:sqlite:/data/lightswitch.db" + SPRING_DATASOURCE_URL: "jdbc:sqlite:lightswitch-dev.sqlite" + SPRING_DATASOURCE_DRIVER_CLASS_NAME: "org.sqlite.JDBC" + volumes: + - sqlite_data:/data depends_on: - database database: - image: nouchka/sqlite3:latest + image: alpine:latest container_name: lightswitch_db restart: always - volumes: - - sqlite_data:/data networks: - lightswitch-network + volumes: + - sqlite_data:/data + entrypoint: + - /bin/sh + - -c + - | + apk add --no-cache sqlite && \ + touch /data/lightswitch-dev.sqlite && \ + tail -f /dev/null networks: lightswitch-network: diff --git a/frontend/.dockerignore b/frontend/.dockerignore new file mode 100644 index 0000000..fde667a --- /dev/null +++ b/frontend/.dockerignore @@ -0,0 +1,3 @@ +node_modules +.next +out \ No newline at end of file diff --git a/frontend/Dockerfile b/frontend/Dockerfile index d1494e2..b15776a 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20 AS builder +FROM node:20-alpine AS builder WORKDIR /app # Install PNPM @@ -6,13 +6,13 @@ RUN corepack enable && corepack prepare pnpm@9.15.4 --activate # use dependency cache with using package.json& pnpm-lock.yaml COPY package.json pnpm-lock.yaml ./ -RUN pnpm install --frozen-lockfile +RUN pnpm install --frozen-lockfile && ls -al node_modules COPY . . RUN pnpm build # Nginx로 정적 파일 서빙 -FROM nginx:1.25 +FROM nginx:alpine WORKDIR /usr/share/nginx/html COPY --from=builder /app/.next/static ./static From 92d0d35abaf50337cff51c593231c4655b3b7e40 Mon Sep 17 00:00:00 2001 From: Yg-Hong Date: Thu, 27 Feb 2025 12:43:03 +0900 Subject: [PATCH 6/7] [Fix] : Comment out @RestcontrollerAdvice --- .../presentation/controlleradvice/GlobalExceptionHandler.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt b/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt index c5c3b53..fdc11b9 100644 --- a/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt +++ b/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt @@ -13,7 +13,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException import org.springframework.web.bind.annotation.ExceptionHandler import org.springframework.web.bind.annotation.RestControllerAdvice -@RestControllerAdvice +//@RestControllerAdvice class GlobalExceptionHandler { private val log = logger() From eb26dc784f24d889cc4bf378d0763aa90e8275d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=ED=99=8D=EC=9C=A4=EA=B8=B0?= Date: Fri, 28 Feb 2025 13:51:37 +0900 Subject: [PATCH 7/7] [Fix] : fixed backend Docker file restore @RestControllerAdvice commented out --- backend/Dockerfile | 9 +++++++-- .../controlleradvice/GlobalExceptionHandler.kt | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/backend/Dockerfile b/backend/Dockerfile index c5bea97..d461631 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -1,9 +1,14 @@ FROM azul/zulu-openjdk:17 LABEL authors="eunhwa" +WORKDIR /app +COPY ./ /app -ARG JAR_FILE=build/libs/*.jar -COPY ${JAR_FILE} app.jar +RUN chmod 755 ./gradlew +RUN ./gradlew clean build + +ARG JAR_FILE=build/libs/backend-0.0.1-SNAPSHOT.jar +COPY ${JAR_FILE} /app.jar # SQLite 데이터베이스 파일이 존재하는 /data 디렉터리를 생성 RUN mkdir -p /data diff --git a/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt b/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt index fdc11b9..c5c3b53 100644 --- a/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt +++ b/backend/src/main/kotlin/com/lightswitch/presentation/controlleradvice/GlobalExceptionHandler.kt @@ -13,7 +13,7 @@ import org.springframework.web.bind.MethodArgumentNotValidException import org.springframework.web.bind.annotation.ExceptionHandler import org.springframework.web.bind.annotation.RestControllerAdvice -//@RestControllerAdvice +@RestControllerAdvice class GlobalExceptionHandler { private val log = logger()