64 lines
2.1 KiB
YAML
64 lines
2.1 KiB
YAML
services:
|
|
rustpad:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
image: rustpad:${IMAGE_TAG:-local}
|
|
restart: unless-stopped
|
|
environment:
|
|
APP_HOST: ${APP_HOST:-0.0.0.0}
|
|
APP_PORT: ${APP_PORT:-3000}
|
|
DATABASE_URL: ${DATABASE_URL:-sqlite:///data/db/rustpad.db?mode=rwc&journal_mode=WAL&busy_timeout=5000}
|
|
DATABASE_MAX_CONNECTIONS: ${DATABASE_MAX_CONNECTIONS:-8}
|
|
STATIC_DIR: ${STATIC_DIR:-/app/static}
|
|
FILES_DIR: ${FILES_DIR:-/data/files}
|
|
UPLOAD_MAX_SIZE_MB: ${UPLOAD_MAX_SIZE_MB:-20}
|
|
REGISTRATION_ENABLED: ${REGISTRATION_ENABLED:-false}
|
|
RUST_LOG: ${RUST_LOG:-rustpad=info,tower_http=warn}
|
|
FRONTEND_LOG_LEVEL: ${FRONTEND_LOG_LEVEL:-warn}
|
|
PUBLIC_URL: ${PUBLIC_URL:-http://localhost:3000}
|
|
SMTP_HOST: ${SMTP_HOST:-}
|
|
SMTP_PORT: ${SMTP_PORT:-587}
|
|
SMTP_USERNAME: ${SMTP_USERNAME:-}
|
|
SMTP_PASSWORD: ${SMTP_PASSWORD:-}
|
|
SMTP_FROM: ${SMTP_FROM:-}
|
|
ports:
|
|
- "${RUSTPAD_PORT:-3000}:${APP_PORT:-3000}"
|
|
volumes:
|
|
- ./data:/data
|
|
|
|
postgres:
|
|
image: postgres:18
|
|
profiles: ["pgsql"]
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-rustpad}
|
|
POSTGRES_USER: ${POSTGRES_USER:-rustpad}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-rustpad}
|
|
PGDATA: /var/lib/postgresql
|
|
volumes:
|
|
- ./data/db/pgsql:/var/lib/postgresql
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-rustpad} -d ${POSTGRES_DB:-rustpad}"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 20
|
|
|
|
mysql:
|
|
image: mysql:8
|
|
profiles: ["mysql"]
|
|
environment:
|
|
MYSQL_DATABASE: ${MYSQL_DATABASE:-rustpad}
|
|
MYSQL_USER: ${MYSQL_USER:-rustpad}
|
|
MYSQL_PASSWORD: ${MYSQL_PASSWORD:-rustpad}
|
|
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-root}
|
|
command: ["--character-set-server=utf8mb4", "--collation-server=utf8mb4_unicode_ci"]
|
|
volumes:
|
|
- ./data/db/mysql:/var/lib/mysql
|
|
healthcheck:
|
|
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-root}"]
|
|
interval: 5s
|
|
timeout: 3s
|
|
retries: 30
|
|
|
|
|