docker compose updated

This commit is contained in:
jhpin2 2025-04-10 15:38:34 +06:00
parent ef58757c35
commit c5b179425e
2 changed files with 53 additions and 56 deletions

30
Dockerfile Normal file
View file

@ -0,0 +1,30 @@
# Install dependencies only when needed
FROM node:18-alpine AS deps
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm install
# Build the app
FROM node:18-alpine AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .
RUN npm run build
# Run the app
FROM node:18-alpine AS runner
WORKDIR /app
ENV NODE_ENV production
ENV PORT 3000
COPY --from=builder /app/public ./public
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/package.json ./package.json
EXPOSE 3000
CMD ["npm", "start"]

View file

@ -1,56 +1,23 @@
version: "3.8"
services:
traefik:
image: traefik:latest
command:
- "--api.dashboard=true"
- "--providers.docker=true"
- "--entrypoints.http.address=:80"
- "--entrypoints.https.address=:443"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge=true"
- "--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=http"
- "--certificatesresolvers.letsencrypt.acme.email=you@example.com"
- "--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- "/var/run/docker.sock:/var/run/docker.sock:ro"
- "./letsencrypt:/letsencrypt"
labels:
- "traefik.enable=true"
webapp:
image: your-image-name:latest
webapp:
build:
context: .
dockerfile: Dockerfile
expose:
- "3000"
labels:
- "traefik.enable=true"
# HTTP Router
- "traefik.http.routers.http-webapp.rule=Host(`planpostai.com`) || Host(`www.planpostai.com`)"
- "traefik.http.routers.http-webapp.entrypoints=http"
- "traefik.http.routers.http-webapp.middlewares=redirect-to-https"
# HTTPS Router
- "traefik.http.routers.https-webapp.rule=Host(`planpostai.com`) || Host(`www.planpostai.com`)"
- "traefik.http.routers.https-webapp.entrypoints=https"
- "traefik.http.routers.https-webapp.tls=true"
- "traefik.http.routers.https-webapp.tls.certresolver=letsencrypt"
- "traefik.http.routers.https-webapp.middlewares=redirect-to-www,gzip"
- "traefik.http.routers.https-webapp.service=webapp-service"
# Redirect HTTP → HTTPS
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
# Redirect non-www to www
- "traefik.http.middlewares.redirect-to-www.redirectregex.regex=^https?://(?:www\\.)?(.+)"
- "traefik.http.middlewares.redirect-to-www.redirectregex.replacement=https://www.$${1}"
- "traefik.http.middlewares.redirect-to-www.redirectregex.permanent=true"
# Enable GZIP
- "traefik.http.middlewares.gzip.compress=true"
# Service Definition
- "traefik.http.services.webapp-service.loadbalancer.server.port=3000"