mirror of
https://github.com/Dvorinka/Productier.git
synced 2026-06-03 20:13:01 +00:00
60 lines
2.0 KiB
YAML
60 lines
2.0 KiB
YAML
# Productier Backend Remote Deployment
|
|
# Usage: docker compose -f docker-compose.remote.yml --env-file remote.env up -d
|
|
#
|
|
# Prerequisites:
|
|
# 1. Copy remote.env to .env and configure all required values
|
|
# 2. Ensure PostgreSQL database is accessible
|
|
# 3. Ensure auth service is running and accessible at AUTH_SERVICE_URL
|
|
|
|
services:
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: productier-api:latest
|
|
restart: unless-stopped
|
|
init: true
|
|
read_only: true
|
|
security_opt:
|
|
- no-new-privileges:true
|
|
tmpfs:
|
|
- /tmp
|
|
ports:
|
|
- "${API_PORT:-8080}:8080"
|
|
environment:
|
|
APP_ENV: ${APP_ENV:-production}
|
|
API_PORT: 8080
|
|
API_SHUTDOWN_TIMEOUT: ${API_SHUTDOWN_TIMEOUT:-15s}
|
|
DATABASE_URL: ${DATABASE_URL:?DATABASE_URL is required}
|
|
AUTH_SERVICE_URL: ${AUTH_SERVICE_URL:?AUTH_SERVICE_URL is required}
|
|
CORS_ALLOW_ORIGINS: ${CORS_ALLOW_ORIGINS:?CORS_ALLOW_ORIGINS is required}
|
|
BETTER_AUTH_SECRET: ${BETTER_AUTH_SECRET:?BETTER_AUTH_SECRET is required}
|
|
MAIL_ENCRYPTION_KEY: ${MAIL_ENCRYPTION_KEY:?MAIL_ENCRYPTION_KEY is required}
|
|
FILE_STORAGE_PROVIDER: ${FILE_STORAGE_PROVIDER:-local}
|
|
FILE_STORAGE_DIR: ${FILE_STORAGE_DIR:-/tmp/uploads}
|
|
DB_MIGRATIONS_DIR: /app/migrations
|
|
# S3 storage (if FILE_STORAGE_PROVIDER=s3)
|
|
S3_ENDPOINT: ${S3_ENDPOINT:-}
|
|
S3_REGION: ${S3_REGION:-us-east-1}
|
|
S3_BUCKET: ${S3_BUCKET:-productier}
|
|
S3_ACCESS_KEY: ${S3_ACCESS_KEY:-}
|
|
S3_SECRET_KEY: ${S3_SECRET_KEY:-}
|
|
S3_USE_PATH_STYLE: ${S3_USE_PATH_STYLE:-false}
|
|
# Optional metrics auth
|
|
METRICS_AUTH_TOKEN: ${METRICS_AUTH_TOKEN:-}
|
|
volumes:
|
|
# Persist uploads if using local storage
|
|
- uploads-data:${FILE_STORAGE_DIR:-/tmp/uploads}
|
|
healthcheck:
|
|
test: ["CMD", "wget", "-q", "-O", "-", "http://127.0.0.1:8080/v1/health"]
|
|
interval: 15s
|
|
timeout: 5s
|
|
retries: 20
|
|
logging:
|
|
driver: json-file
|
|
options:
|
|
max-size: "10m"
|
|
max-file: "5"
|
|
|
|
volumes:
|
|
uploads-data: |