auto deploy on production server now finalized ready for smoke test.
This commit is contained in:
@@ -1,13 +1,11 @@
|
||||
# Production stack — pull images from Docker Hub, HTTPS via Let's Encrypt (certbot).
|
||||
# Production stack — pull backend/frontend from Gitea (or Docker Hub fallback).
|
||||
# HTTPS via Let's Encrypt (certbot) on this host only (nudentic.ir).
|
||||
#
|
||||
# Server setup (minimal):
|
||||
# 1. Copy deploy.prod.env.example → .env (DOMAIN, DOCKER_USERNAME, LETSENCRYPT_EMAIL)
|
||||
# 2. Copy secrets/*.example → ../secrets/ (database.env, backend.env) — outside git
|
||||
# 3. docker login (private Docker Hub images)
|
||||
# 4. ./scripts/init-letsencrypt.sh (first time only)
|
||||
# 5. docker compose -f docker-compose.prod.yml --env-file .env up -d
|
||||
# Gitea tag deploy: set REGISTRY_PREFIX=wixur.ir:3000/<owner> and TAG=v1.0.1 in .env
|
||||
# Hub fallback: omit REGISTRY_PREFIX, set DOCKER_USERNAME=dyolink (image dyolink/dyolink-*).
|
||||
#
|
||||
# Updates: docker compose pull && docker compose up -d
|
||||
# First SSL: ./scripts/init-letsencrypt.sh then up -d
|
||||
# Tag updates: CI runs scripts/prod-remote-deploy.sh (or pull + up locally)
|
||||
|
||||
name: dyolink-prod
|
||||
|
||||
@@ -39,7 +37,7 @@ services:
|
||||
start_period: 40s
|
||||
|
||||
backend:
|
||||
image: ${DOCKER_USERNAME}/dyolink-backend:${TAG:-latest}
|
||||
image: ${REGISTRY_PREFIX:-dyolink}/dyolink-backend:${TAG:-latest}
|
||||
container_name: dyolink_backend_prod
|
||||
depends_on:
|
||||
postgres:
|
||||
@@ -68,7 +66,7 @@ services:
|
||||
start_period: 60s
|
||||
|
||||
frontend:
|
||||
image: ${DOCKER_USERNAME}/dyolink-frontend:${TAG:-latest}
|
||||
image: ${REGISTRY_PREFIX:-dyolink}/dyolink-frontend:${TAG:-latest}
|
||||
container_name: dyolink_frontend_prod
|
||||
depends_on:
|
||||
- backend
|
||||
@@ -88,7 +86,8 @@ services:
|
||||
max-size: "10m"
|
||||
max-file: "3"
|
||||
healthcheck:
|
||||
test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:3000/', (r) => {if(r.statusCode!==200)process.exit(1)})"]
|
||||
# Next.js `/` redirects to `/en` — accept 2xx/3xx.
|
||||
test: ["CMD", "node", "-e", "require('http').get('http://127.0.0.1:3000/', (r) => { process.exit(r.statusCode >= 200 && r.statusCode < 400 ? 0 : 1); }).on('error', () => process.exit(1))"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
|
||||
Reference in New Issue
Block a user