services: << service_name >>: image: ghcr.io/mastodon/mastodon:latest container_name: << service_name >> environment: - TZ=<< timezone >> - LOCAL_DOMAIN=<< domein >> - RAILS_ENV=production - DB_HOST=<< service_name >>-db - DB_USER=mastodon - DB_NAME=mastodon - DB_PASS=<< db_password >> - DB_PORT=5432 - REDIS_HOST=<< service_name >>-redis - REDIS_PORT=6379 - SECRET_KEY_BASE=<< secret_key_base >> - OTP_SECRET=<< otp_secret >> - ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=<< ar_primary_key >> - ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY=<< ar_deterministic_key >> - ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=<< ar_salt >> volumes: - << appdata_dir >>/<< service_name >>:/mastodon/public/system command: bash -c "rails db:migrate && rails s -p 3000" ports: - "<< port >>:3000" depends_on: - << service_name >>-db - << service_name >>-redis restart: unless-stopped << service_name >>-db: image: postgres:16-alpine container_name: << service_name >>-db environment: - POSTGRES_DB=mastodon - POSTGRES_USER=mastodon - POSTGRES_PASSWORD=<< db_password >> volumes: - << appdata_dir >>/<< service_name >>-db:/var/lib/postgresql/data restart: unless-stopped << service_name >>-redis: image: valkey/valkey:8-alpine container_name: << service_name >>-redis command: valkey-server --save 60 1 volumes: - << appdata_dir >>/<< service_name >>-redis:/data restart: unless-stopped