diff --git a/docker-compose.yml b/docker-compose.yml index 2316396..997450d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -6,8 +6,6 @@ services: POSTGRES_USER: ${POSTGRES_USER:-evan} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-evanpass} POSTGRES_DB: ${POSTGRES_DB:-evanpage} - ports: - - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data healthcheck: @@ -31,8 +29,6 @@ services: AUTH_KEYCLOAK_ISSUER: ${AUTH_KEYCLOAK_ISSUER:-} AUTH_KEYCLOAK_ID: ${AUTH_KEYCLOAK_ID:-} AUTH_KEYCLOAK_SECRET: ${AUTH_KEYCLOAK_SECRET:-} - ports: - - "8080:8080" volumes: - ./backend:/app - /app/tmp @@ -45,6 +41,7 @@ services: frontend: build: context: ./frontend + target: production container_name: evanpage-frontend environment: SERVER_API_URL: ${SERVER_API_URL:-http://backend:8080} @@ -53,11 +50,11 @@ services: AUTH_KEYCLOAK_ISSUER: ${AUTH_KEYCLOAK_ISSUER:-} AUTH_KEYCLOAK_ID: ${AUTH_KEYCLOAK_ID:-} AUTH_KEYCLOAK_SECRET: ${AUTH_KEYCLOAK_SECRET:-} + AUTH_URL: ${AUTH_URL:-https://www.liukersun.com} + NEXTAUTH_URL: ${NEXTAUTH_URL:-https://www.liukersun.com} + AUTH_TRUST_HOST: ${AUTH_TRUST_HOST:-true} ports: - - "3000:3000" - volumes: - - ./frontend:/app - - /app/node_modules + - "127.0.0.1:3001:3000" depends_on: - backend networks: diff --git a/frontend/Dockerfile b/frontend/Dockerfile index 27d055a..66eb76e 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,15 +1,37 @@ -FROM node:20-alpine - +FROM node:20-alpine AS deps WORKDIR /app +COPY package*.json ./ +RUN npm ci +FROM node:20-alpine AS builder +WORKDIR /app +COPY --from=deps /app/node_modules ./node_modules +COPY . . +ENV NEXT_TELEMETRY_DISABLED=1 +ENV NODE_OPTIONS=--max-old-space-size=1024 +RUN npm run build + +FROM node:20-alpine AS production +WORKDIR /app +ENV NODE_ENV=production +ENV PORT=3000 +ENV HOSTNAME=0.0.0.0 +ENV NEXT_TELEMETRY_DISABLED=1 + +COPY --from=builder /app/public ./public +COPY --from=builder /app/.next/standalone ./ +COPY --from=builder /app/.next/static ./.next/static + +EXPOSE 3000 +CMD ["node", "server.js"] + +FROM node:20-alpine AS dev +WORKDIR /app COPY package*.json ./ RUN npm install - COPY . . - EXPOSE 3000 ENV NODE_ENV=development ENV PORT=3000 ENV HOSTNAME=0.0.0.0 - CMD ["npm", "run", "dev"]