fix:docker
This commit is contained in:
41
Dockerfile
41
Dockerfile
@@ -1,36 +1,55 @@
|
|||||||
# Build stage
|
# Build stage
|
||||||
FROM node:20-alpine AS builder
|
FROM node:20-alpine AS builder
|
||||||
|
|
||||||
# Install pnpm
|
|
||||||
RUN npm install -g pnpm
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy package files
|
# Copy package files
|
||||||
COPY package.json pnpm-lock.yaml ./
|
COPY package.json package-lock.json* ./
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN pnpm install --frozen-lockfile
|
RUN npm ci
|
||||||
|
|
||||||
# Copy source code
|
# Copy source code
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
|
# Set build-time environment variables
|
||||||
|
ARG DATABASE_URL
|
||||||
|
ARG GOOGLE_CLIENT_ID
|
||||||
|
ARG GOOGLE_CLIENT_SECRET
|
||||||
|
ARG R2_ACCOUNT_ID
|
||||||
|
ARG R2_ACCESS_KEY_ID
|
||||||
|
ARG R2_SECRET_ACCESS_KEY
|
||||||
|
ARG R2_BUCKET_NAME
|
||||||
|
ARG GOOGLE_MAPS_API_KEY
|
||||||
|
ARG VAPID_PUBLIC_KEY
|
||||||
|
ARG VAPID_PRIVATE_KEY
|
||||||
|
ARG VAPID_SUBJECT
|
||||||
|
|
||||||
|
ENV DATABASE_URL=${DATABASE_URL}
|
||||||
|
ENV GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
|
||||||
|
ENV GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
||||||
|
ENV R2_ACCOUNT_ID=${R2_ACCOUNT_ID}
|
||||||
|
ENV R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID}
|
||||||
|
ENV R2_SECRET_ACCESS_KEY=${R2_SECRET_ACCESS_KEY}
|
||||||
|
ENV R2_BUCKET_NAME=${R2_BUCKET_NAME}
|
||||||
|
ENV GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY}
|
||||||
|
ENV VAPID_PUBLIC_KEY=${VAPID_PUBLIC_KEY}
|
||||||
|
ENV VAPID_PRIVATE_KEY=${VAPID_PRIVATE_KEY}
|
||||||
|
ENV VAPID_SUBJECT=${VAPID_SUBJECT}
|
||||||
|
|
||||||
# Build the app
|
# Build the app
|
||||||
RUN pnpm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Production stage
|
# Production stage
|
||||||
FROM node:20-alpine
|
FROM node:20-alpine
|
||||||
|
|
||||||
# Install pnpm
|
|
||||||
RUN npm install -g pnpm
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Copy package files
|
# Copy package files
|
||||||
COPY package.json pnpm-lock.yaml ./
|
COPY package.json package-lock.json* ./
|
||||||
|
|
||||||
# Install production dependencies only
|
# Install production dependencies only
|
||||||
RUN pnpm install --prod --frozen-lockfile
|
RUN npm ci --omit=dev
|
||||||
|
|
||||||
# Copy built app from builder
|
# Copy built app from builder
|
||||||
COPY --from=builder /app/build ./build
|
COPY --from=builder /app/build ./build
|
||||||
|
|||||||
@@ -21,6 +21,18 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
|
args:
|
||||||
|
- DATABASE_URL=postgresql://serengo:serengo_password@postgres:5432/serengo
|
||||||
|
- GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID}
|
||||||
|
- GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET}
|
||||||
|
- R2_ACCOUNT_ID=${R2_ACCOUNT_ID}
|
||||||
|
- R2_ACCESS_KEY_ID=${R2_ACCESS_KEY_ID}
|
||||||
|
- R2_SECRET_ACCESS_KEY=${R2_SECRET_ACCESS_KEY}
|
||||||
|
- R2_BUCKET_NAME=${R2_BUCKET_NAME}
|
||||||
|
- GOOGLE_MAPS_API_KEY=${GOOGLE_MAPS_API_KEY}
|
||||||
|
- VAPID_PUBLIC_KEY=${VAPID_PUBLIC_KEY}
|
||||||
|
- VAPID_PRIVATE_KEY=${VAPID_PRIVATE_KEY}
|
||||||
|
- VAPID_SUBJECT=${VAPID_SUBJECT}
|
||||||
container_name: serengo-app
|
container_name: serengo-app
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
Reference in New Issue
Block a user