89 lines
3.2 KiB
YAML
89 lines
3.2 KiB
YAML
services:
|
|
app:
|
|
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}
|
|
STORAGE_DRIVER: ${STORAGE_DRIVER:-local}
|
|
S3_ENDPOINT: ${S3_ENDPOINT:-}
|
|
S3_REGION: ${S3_REGION:-us-east-1}
|
|
S3_BUCKET: ${S3_BUCKET:-}
|
|
S3_ACCESS_KEY: ${S3_ACCESS_KEY:-}
|
|
S3_SECRET_KEY: ${S3_SECRET_KEY:-}
|
|
S3_FORCE_PATH_STYLE: ${S3_FORCE_PATH_STYLE:-false}
|
|
UPLOAD_MAX_SIZE_MB: ${UPLOAD_MAX_SIZE_MB:-20}
|
|
REGISTRATION_ENABLED: ${REGISTRATION_ENABLED:-false}
|
|
ACCOUNT_CONFIRMATION_REQUIRED: ${ACCOUNT_CONFIRMATION_REQUIRED:-false}
|
|
ANONYMOUS_ACCESS_TOKEN_TTL_DAYS: ${ANONYMOUS_ACCESS_TOKEN_TTL_DAYS:-7}
|
|
USER_SESSION_TTL_DAYS: ${USER_SESSION_TTL_DAYS:-30}
|
|
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
|
|
|
|
garage:
|
|
image: dxflrs/garage:v2.3.0
|
|
profiles: [ "s3" ]
|
|
restart: unless-stopped
|
|
command: [ "/garage", "server", "--single-node", "--default-bucket" ]
|
|
environment:
|
|
GARAGE_DEFAULT_ACCESS_KEY: ${S3_ACCESS_KEY:-GK0123456789abcdef0123456789abcdef}
|
|
GARAGE_DEFAULT_SECRET_KEY: ${S3_SECRET_KEY:-0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef}
|
|
GARAGE_DEFAULT_BUCKET: ${S3_BUCKET:-attachments}
|
|
ports:
|
|
- "${GARAGE_S3_PORT:-3900}:3900"
|
|
- "${GARAGE_ADMIN_PORT:-3903}:3903"
|
|
volumes:
|
|
- ./docker/garage/garage.toml:/etc/garage.toml:ro
|
|
- ./data/garage/meta:/var/lib/garage/meta
|
|
- ./data/garage/data:/var/lib/garage/data
|