add docker stuff to host that way
This commit is contained in:
		
							
								
								
									
										54
									
								
								docker/production/Dockerfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								docker/production/Dockerfile
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,54 @@
 | 
			
		||||
# syntax=docker.io/docker/dockerfile:1
 | 
			
		||||
 | 
			
		||||
FROM node:18-alpine AS base
 | 
			
		||||
 | 
			
		||||
# 1. Install dependencies only when needed
 | 
			
		||||
FROM base AS deps
 | 
			
		||||
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
 | 
			
		||||
RUN apk add --no-cache libc6-compat
 | 
			
		||||
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
 | 
			
		||||
# Install dependencies based on the preferred package manager
 | 
			
		||||
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* .npmrc* ./
 | 
			
		||||
RUN \
 | 
			
		||||
  if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
 | 
			
		||||
  elif [ -f package-lock.json ]; then npm ci; \
 | 
			
		||||
  elif [ -f pnpm-lock.yaml ]; then corepack enable pnpm && pnpm i; \
 | 
			
		||||
  else echo "Lockfile not found." && exit 1; \
 | 
			
		||||
  fi
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# 2. Rebuild the source code only when needed
 | 
			
		||||
FROM base AS builder
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
COPY --from=deps /app/node_modules ./node_modules
 | 
			
		||||
COPY . .
 | 
			
		||||
# This will do the trick, use the corresponding env file for each environment.
 | 
			
		||||
COPY .env .env.production
 | 
			
		||||
RUN npm run build
 | 
			
		||||
 | 
			
		||||
# 3. Production image, copy all the files and run next
 | 
			
		||||
FROM base AS runner
 | 
			
		||||
WORKDIR /app
 | 
			
		||||
 | 
			
		||||
ENV NODE_ENV=production
 | 
			
		||||
 | 
			
		||||
RUN addgroup -g 1001 -S nodejs
 | 
			
		||||
RUN adduser -S nextjs -u 1001
 | 
			
		||||
 | 
			
		||||
COPY --from=builder /app/public ./public
 | 
			
		||||
 | 
			
		||||
# Automatically leverage output traces to reduce image size
 | 
			
		||||
# https://nextjs.org/docs/advanced-features/output-file-tracing
 | 
			
		||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
 | 
			
		||||
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
USER nextjs
 | 
			
		||||
 | 
			
		||||
EXPOSE 3000
 | 
			
		||||
 | 
			
		||||
ENV PORT=3000
 | 
			
		||||
 | 
			
		||||
CMD HOSTNAME="0.0.0.0" node server.js
 | 
			
		||||
							
								
								
									
										16
									
								
								docker/production/compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								docker/production/compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
services:
 | 
			
		||||
  gib_portfolio:
 | 
			
		||||
    build:
 | 
			
		||||
      context: ../../
 | 
			
		||||
      dockerfile: docker/production/Dockerfile
 | 
			
		||||
    image: with-docker-multi-env-development
 | 
			
		||||
    container_name: gib_portfolio
 | 
			
		||||
    networks:
 | 
			
		||||
      - node_apps
 | 
			
		||||
    ports:
 | 
			
		||||
      - "3000:3000"
 | 
			
		||||
    tty: true
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
networks:
 | 
			
		||||
  node_apps:
 | 
			
		||||
    external: true
 | 
			
		||||
		Reference in New Issue
	
	Block a user