-
-
Notifications
You must be signed in to change notification settings - Fork 954
Open
Description
Hello, it's possible to add a Dockerfile for easy deployment? i know this may work out of the box in vercel or others but to deploy in any enviroment can we add a Dockerfile?
for example
# Install dependencies only when needed
FROM base AS deps
WORKDIR /app
# Install Yarn 3.2.3
RUN apk add --no-cache libc6-compat git python3 make g++ \
&& corepack enable \
&& corepack prepare yarn@3.2.3 --activate
# Copy package files for installation
COPY package.json yarn.lock .yarnrc.yml ./
COPY .yarn ./.yarn
# Install dependencies
RUN yarn install --immutable
# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
# Copy dependencies
COPY --from=deps /app/node_modules ./node_modules
COPY --from=deps /app/.yarn ./.yarn
COPY --from=deps /app/.pnp.* ./
# Copy all files
COPY . .
# Set environment variables
ARG NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY
ENV NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY=$NEXT_PUBLIC_MEDUSA_PUBLISHABLE_KEY
ARG MEDUSA_BACKEND_URL
ENV MEDUSA_BACKEND_URL=${MEDUSA_BACKEND_URL:-http://localhost:9000}
ARG NEXT_PUBLIC_BASE_URL
ENV NEXT_PUBLIC_BASE_URL=${NEXT_PUBLIC_BASE_URL:-http://localhost:8000}
ARG NEXT_PUBLIC_DEFAULT_REGION
ENV NEXT_PUBLIC_DEFAULT_REGION=${NEXT_PUBLIC_DEFAULT_REGION:-us}
# Build application
RUN yarn build
# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app
ENV NODE_ENV production
# Create a non-root user
RUN addgroup --system --gid 1001 nodejs \
&& adduser --system --uid 1001 nextjs
# Copy necessary files from builder
COPY --from=builder /app/public ./public
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
# Set user to non-root
USER nextjs
# Expose port
EXPOSE 8000
# Set environment variables
ENV PORT 8000
ENV HOSTNAME "0.0.0.0"
# Start the application
CMD ["node", "server.js"]```
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels