aset Dockerfile
This commit is contained in:
@@ -0,0 +1,50 @@
|
|||||||
|
# Default Docker ignore
|
||||||
|
**/.dockerignore
|
||||||
|
**/Dockerfile
|
||||||
|
**/docker-compose*
|
||||||
|
|
||||||
|
# Node.js specific
|
||||||
|
**/node_modules
|
||||||
|
**/npm-debug.log
|
||||||
|
**/yarn-debug.log
|
||||||
|
**/yarn-error.log
|
||||||
|
**/package-lock.json
|
||||||
|
**/yarn.lock
|
||||||
|
|
||||||
|
# Next.js specific
|
||||||
|
**/.next
|
||||||
|
**/build
|
||||||
|
**/out
|
||||||
|
**/.cache
|
||||||
|
|
||||||
|
# Testing
|
||||||
|
**/__tests__
|
||||||
|
**/coverage
|
||||||
|
**/jest.config.js
|
||||||
|
|
||||||
|
# Environment files
|
||||||
|
**/.env
|
||||||
|
**/.env.local
|
||||||
|
**/.env.development
|
||||||
|
**/.env.test
|
||||||
|
|
||||||
|
# Version control
|
||||||
|
**/.git
|
||||||
|
**/.gitignore
|
||||||
|
**/.gitmodules
|
||||||
|
|
||||||
|
# IDE specific
|
||||||
|
**/.vscode
|
||||||
|
**/.idea
|
||||||
|
**/*.iml
|
||||||
|
|
||||||
|
# Miscellaneous
|
||||||
|
**/README.md
|
||||||
|
**/LICENSE
|
||||||
|
**/CHANGELOG.md
|
||||||
|
**/docs
|
||||||
|
**/notes
|
||||||
|
**/.DS_Store
|
||||||
|
**/Thumbs.db
|
||||||
|
**/tmp
|
||||||
|
**/dist
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
# docker-compose.yml
|
|
||||||
version: '3.8'
|
|
||||||
|
|
||||||
services:
|
|
||||||
react-app:
|
|
||||||
build: .
|
|
||||||
ports:
|
|
||||||
- "3000:80" # Changed host port
|
|
||||||
environment:
|
|
||||||
- NODE_ENV=production
|
|
||||||
restart: unless-stopped
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
server {
|
|
||||||
listen 80;
|
|
||||||
server_name localhost;
|
|
||||||
|
|
||||||
location / {
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
index index.html index.htm;
|
|
||||||
try_files $uri $uri/ /index.html;
|
|
||||||
}
|
|
||||||
|
|
||||||
error_page 500 502 503 504 /50x.html;
|
|
||||||
location = /50x.html {
|
|
||||||
root /usr/share/nginx/html;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
+21
-12
@@ -3,30 +3,39 @@ FROM node:22-alpine AS builder
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install system dependencies (if needed)
|
# Install system dependencies for native modules
|
||||||
RUN apk add --no-cache python3 make g++
|
RUN apk add --no-cache python3 make g++ git
|
||||||
|
|
||||||
# Copy package files
|
# Copy package files
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|
||||||
# Install dependencies
|
# Install dependencies
|
||||||
RUN npm i --force
|
RUN npm install --force
|
||||||
|
|
||||||
# Copy source code
|
# Copy source code
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Build React app
|
# Build Next.js application
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# Production stage
|
# Production stage
|
||||||
FROM nginx:1.25-alpine
|
FROM node:22-alpine AS production
|
||||||
|
|
||||||
# Copy nginx config
|
WORKDIR /app
|
||||||
COPY docker/nginx/nginx.conf /etc/nginx/conf.d/default.conf
|
|
||||||
|
|
||||||
# Copy build artifacts
|
# Enable production mode
|
||||||
COPY --from=builder /app/build /usr/share/nginx/html
|
ENV NODE_ENV production
|
||||||
|
|
||||||
# Expose and run
|
# Install dependencies for production (curl for health checks)
|
||||||
EXPOSE 80
|
RUN apk add --no-cache curl
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
|
||||||
|
# Copy built assets from builder
|
||||||
|
COPY --from=builder /app/.next/standalone ./
|
||||||
|
COPY --from=builder /app/.next/static ./.next/static
|
||||||
|
COPY --from=builder /app/public ./public
|
||||||
|
|
||||||
|
# Expose the Next.js port
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
# Start the server
|
||||||
|
CMD ["node", "server.js"]
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// next.config.js
|
||||||
|
const nextConfig = {
|
||||||
|
output: 'standalone',
|
||||||
|
// Add other configurations below
|
||||||
|
reactStrictMode: true,
|
||||||
|
swcMinify: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = nextConfig
|
||||||
Reference in New Issue
Block a user