Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions backend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.idea/
*.iml
*.iws
target/
.sonar/
.sonarlint/
31 changes: 26 additions & 5 deletions backend/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,13 +1,34 @@
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

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:ol8-java17 as builder

# WORKDIR /app
# COPY ./ /app

# RUN chmod +x gradlew
# RUN ./gradlew clean build

# ARG JAR_FILE=./build/libs/*.jar

# COPY ${JAR_FILE} app.jar

# ENTRYPOINT ["java","-jar","app.jar"]
53 changes: 53 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
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:lightswitch-dev.sqlite"
SPRING_DATASOURCE_DRIVER_CLASS_NAME: "org.sqlite.JDBC"
volumes:
- sqlite_data:/data
depends_on:
- database

database:
image: alpine:latest
container_name: lightswitch_db
restart: always
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:

volumes:
sqlite_data:
3 changes: 3 additions & 0 deletions frontend/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node_modules
.next
out
30 changes: 30 additions & 0 deletions frontend/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
FROM node:20-alpine AS builder
WORKDIR /app

# Install PNPM
RUN corepack enable && corepack prepare [email protected] --activate

# use dependency cache with using package.json& pnpm-lock.yaml
COPY package.json pnpm-lock.yaml ./

RUN pnpm install --frozen-lockfile && ls -al node_modules
COPY . .
RUN pnpm build

# Nginx로 정적 파일 서빙
FROM nginx:alpine

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;"]
17 changes: 17 additions & 0 deletions frontend/nginx/default.conf
Original file line number Diff line number Diff line change
@@ -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;
}
}
Loading