Files
templates/blueprints/plane/docker-compose.yml
Rayane 16693e6f74 fix(plane): update to v1.2.3 and replace MinIO with RustFS (#760)
* fix(plane): update template to Plane v1.x (stable)
The existing template targeted v0.27.1 which is heavily outdated.
This updates it to match Plane's current official deployment config.
Changes:
- Images: v0.27.1 → stable (currently v1.2.3) from Docker Hub
- Remove explicit commands from frontend services (built into images)
- Postgres: 17-alpine → 15.7-alpine (matches Plane's supported version)
- Valkey: 7.2.5 → 7.2.11
- Proxy: add admin + live dependencies, proxy_config/proxy_data volumes
- Add LIVE_SERVER_SECRET_KEY, APP_DOMAIN, SITE_ADDRESS env vars
- Add RABBITMQ_USER/PASSWORD/VHOST (new v1.x env var names)
- Fix RABBITMQ_DEFAULT_USER bug (was hardcoded string, not variable)
- Fix DATABASE_URL to use template variables directly
- Fix AWS_ACCESS_KEY_ID to match MINIO_ROOT_USER literal
- Remove deprecated: version key, SENTRY_*, NGINX_PORT
- Remove unused env_file from plane-redis
- Add restart policies to all services

* fix(plane): replace MinIO with RustFS (Apache 2.0)
MinIO's open-source edition is effectively dead:
- Admin UI stripped (March 2025)
- Docker images discontinued (October 2025)
- GitHub repo in maintenance mode (December 2025)
- Marked as "NO LONGER MAINTAINED" (February 2026)
RustFS is an S3-compatible drop-in replacement:
- Apache 2.0 license (no AGPL restrictions)
- Same S3 API on port 9000
- Written in Rust, 2.3x faster than MinIO for small objects
- Active development with built-in web console

* fix(plane): address CI and convention issues

- Add back version: "3.8" (required by Dokploy conventions)
- Update meta.json: version v0.27.1 → v1.2.3
- Run process-meta to fix pre-existing strapi duplicate
- Migrator restart: "no" → on-failure

* fix(plane): address review feedback

- Pin RustFS to 1.0.0-alpha.90 (no latest tag)
- WEB_URL and CORS_ALLOWED_ORIGINS use http (Dokploy handles TLS)
2026-07-07 17:36:19 -06:00

151 lines
2.8 KiB
YAML

version: "3.8"
services:
web:
image: makeplane/plane-frontend:${APP_RELEASE:-v1.2.3}
restart: always
depends_on:
- api
- worker
env_file:
- .env
space:
image: makeplane/plane-space:${APP_RELEASE:-v1.2.3}
restart: always
depends_on:
- api
- worker
- web
env_file:
- .env
admin:
image: makeplane/plane-admin:${APP_RELEASE:-v1.2.3}
restart: always
depends_on:
- api
- web
env_file:
- .env
live:
image: makeplane/plane-live:${APP_RELEASE:-v1.2.3}
restart: always
depends_on:
- api
- web
env_file:
- .env
api:
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
restart: always
command: ./bin/docker-entrypoint-api.sh
volumes:
- logs_api:/code/plane/logs
depends_on:
- plane-db
- plane-redis
- plane-mq
env_file:
- .env
worker:
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
restart: always
command: ./bin/docker-entrypoint-worker.sh
volumes:
- logs_worker:/code/plane/logs
depends_on:
- api
- plane-db
- plane-redis
- plane-mq
env_file:
- .env
beat-worker:
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
restart: always
command: ./bin/docker-entrypoint-beat.sh
volumes:
- logs_beat-worker:/code/plane/logs
depends_on:
- api
- plane-db
- plane-redis
- plane-mq
env_file:
- .env
migrator:
image: makeplane/plane-backend:${APP_RELEASE:-v1.2.3}
restart: on-failure
command: ./bin/docker-entrypoint-migrator.sh
volumes:
- logs_migrator:/code/plane/logs
depends_on:
- plane-db
- plane-redis
env_file:
- .env
plane-db:
image: postgres:15.7-alpine
restart: always
command: postgres -c 'max_connections=1000'
volumes:
- pgdata:/var/lib/postgresql/data
env_file:
- .env
plane-redis:
image: valkey/valkey:7.2.11-alpine
restart: always
volumes:
- redisdata:/data
plane-mq:
image: rabbitmq:3.13.6-management-alpine
restart: always
volumes:
- rabbitmq_data:/var/lib/rabbitmq
env_file:
- .env
plane-storage:
image: rustfs/rustfs:1.0.0-alpha.90
restart: always
volumes:
- uploads:/data
env_file:
- .env
proxy:
image: makeplane/plane-proxy:${APP_RELEASE:-v1.2.3}
restart: always
depends_on:
- web
- api
- space
- admin
- live
volumes:
- proxy_config:/config
- proxy_data:/data
env_file:
- .env
volumes:
pgdata:
redisdata:
uploads:
logs_api:
logs_worker:
logs_beat-worker:
logs_migrator:
rabbitmq_data:
proxy_config:
proxy_data: