38 lines
1.2 KiB
YAML
38 lines
1.2 KiB
YAML
services:
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
args:
|
|
# Pull the base image through the Nexus docker-group proxy. Override per
|
|
# environment, e.g. NODE_IMAGE=node:20-slim docker compose build.
|
|
NODE_IMAGE: node:20-slim
|
|
# Optional Nexus npm-group token, consumed only by the deps stage.
|
|
NPM_TOKEN: ${NPM_TOKEN:-}
|
|
image: soroushasadi-site:latest
|
|
container_name: soroushasadi-site
|
|
restart: unless-stopped
|
|
ports:
|
|
- "3000:3000"
|
|
environment:
|
|
NODE_ENV: production
|
|
DATA_DIR: /data
|
|
# Set these in a sibling .env file (NOT committed) or your host env.
|
|
ADMIN_PASSWORD: ${ADMIN_PASSWORD:?set ADMIN_PASSWORD}
|
|
ADMIN_SESSION_SECRET: ${ADMIN_SESSION_SECRET:?set ADMIN_SESSION_SECRET}
|
|
RESEND_API_KEY: ${RESEND_API_KEY:-}
|
|
CONTACT_INBOX: ${CONTACT_INBOX:-}
|
|
CONTACT_FROM: ${CONTACT_FROM:-}
|
|
volumes:
|
|
# SQLite content DB + uploaded media persist across rebuilds.
|
|
- cms-data:/data
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 20s
|
|
|
|
volumes:
|
|
cms-data:
|