mirror of
https://github.com/makeplane/plane.git
synced 2025-12-16 20:07:56 +01:00
180 lines
5.0 KiB
YAML
180 lines
5.0 KiB
YAML
# Local development stack with hot reload for web/space/admin/live and Django API.
|
|
# Uses unified dev targets in plane/Dockerfile.node and plane/Dockerfile.api.
|
|
# Infra services (Postgres, Redis, RabbitMQ, MinIO) are included.
|
|
|
|
services:
|
|
# Django API in dev mode (bind mounts for instant reload)
|
|
api:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
target: dev
|
|
restart: unless-stopped
|
|
working_dir: /code
|
|
command: ./bin/docker-entrypoint-api-local.sh
|
|
env_file:
|
|
- ./apps/api/.env
|
|
environment:
|
|
USE_MINIO: "1"
|
|
AWS_S3_ENDPOINT_URL: http://plane-minio:9000
|
|
MINIO_ENDPOINT_URL: http://plane-minio:9000
|
|
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-minioadmin}
|
|
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
|
|
AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads}
|
|
AWS_REGION: ${AWS_REGION:-us-east-1}
|
|
WEB_URL: ${WEB_URL:-http://localhost:3001}
|
|
DJANGO_DEBUG_TOOLBAR: ${DJANGO_DEBUG_TOOLBAR:-0}
|
|
volumes:
|
|
- ./apps/api:/code
|
|
depends_on:
|
|
- plane-db
|
|
- plane-redis
|
|
- plane-mq
|
|
- plane-minio
|
|
ports:
|
|
- "8000:8000"
|
|
|
|
worker:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
target: dev
|
|
restart: unless-stopped
|
|
working_dir: /code
|
|
command: ./bin/docker-entrypoint-worker.sh
|
|
env_file:
|
|
- ./apps/api/.env
|
|
environment:
|
|
USE_MINIO: "1"
|
|
AWS_S3_ENDPOINT_URL: http://plane-minio:9000
|
|
MINIO_ENDPOINT_URL: http://plane-minio:9000
|
|
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-minioadmin}
|
|
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
|
|
AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads}
|
|
AWS_REGION: ${AWS_REGION:-us-east-1}
|
|
volumes:
|
|
- ./apps/api:/code
|
|
depends_on:
|
|
- api
|
|
- plane-db
|
|
- plane-redis
|
|
- plane-mq
|
|
|
|
beat-worker:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
target: dev
|
|
restart: unless-stopped
|
|
working_dir: /code
|
|
command: ./bin/docker-entrypoint-beat.sh
|
|
env_file:
|
|
- ./apps/api/.env
|
|
environment:
|
|
USE_MINIO: "1"
|
|
AWS_S3_ENDPOINT_URL: http://plane-minio:9000
|
|
MINIO_ENDPOINT_URL: http://plane-minio:9000
|
|
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-minioadmin}
|
|
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
|
|
AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads}
|
|
AWS_REGION: ${AWS_REGION:-us-east-1}
|
|
volumes:
|
|
- ./apps/api:/code
|
|
depends_on:
|
|
- api
|
|
- plane-db
|
|
- plane-redis
|
|
- plane-mq
|
|
|
|
migrator:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.api
|
|
target: dev
|
|
restart: "no"
|
|
working_dir: /code
|
|
command: ./bin/docker-entrypoint-migrator.sh --settings=plane.settings.local
|
|
env_file:
|
|
- ./apps/api/.env
|
|
environment:
|
|
USE_MINIO: "1"
|
|
AWS_S3_ENDPOINT_URL: http://plane-minio:9000
|
|
MINIO_ENDPOINT_URL: http://plane-minio:9000
|
|
AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID:-minioadmin}
|
|
AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
|
|
AWS_S3_BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads}
|
|
AWS_REGION: ${AWS_REGION:-us-east-1}
|
|
volumes:
|
|
- ./apps/api:/code
|
|
depends_on:
|
|
- plane-db
|
|
- plane-redis
|
|
- plane-minio
|
|
|
|
# Infra
|
|
plane-db:
|
|
image: postgres:15.7-alpine
|
|
restart: unless-stopped
|
|
command: "postgres -c 'max_connections=1000'"
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-plane}
|
|
POSTGRES_DB: ${POSTGRES_DB:-plane}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-plane}
|
|
PGDATA: /var/lib/postgresql/data
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
ports:
|
|
- "5432:5432"
|
|
|
|
plane-redis:
|
|
image: valkey/valkey:7.2.5-alpine
|
|
restart: unless-stopped
|
|
volumes:
|
|
- redisdata:/data
|
|
ports:
|
|
- "6379:6379"
|
|
|
|
plane-mq:
|
|
image: rabbitmq:3.13.6-management-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
RABBITMQ_DEFAULT_USER: ${RABBITMQ_USER:-plane}
|
|
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_PASSWORD:-plane}
|
|
RABBITMQ_DEFAULT_VHOST: ${RABBITMQ_VHOST:-plane}
|
|
volumes:
|
|
- rabbitmq_data:/var/lib/rabbitmq
|
|
ports:
|
|
- "15672:15672"
|
|
|
|
plane-minio:
|
|
image: minio/minio
|
|
restart: unless-stopped
|
|
# Bootstrap bucket on first run; suitable for local smoke/dev only
|
|
entrypoint: >
|
|
/bin/sh -c "
|
|
set -e
|
|
mkdir -p /export/${AWS_S3_BUCKET_NAME:-uploads};
|
|
minio server /export --console-address ':9090' & pid=$!;
|
|
sleep 5;
|
|
mc alias set myminio http://plane-minio:9000 ${AWS_ACCESS_KEY_ID:-minioadmin} ${AWS_SECRET_ACCESS_KEY:-minioadmin};
|
|
mc mb myminio/${AWS_S3_BUCKET_NAME:-uploads} -p || true;
|
|
wait $pid
|
|
"
|
|
environment:
|
|
MINIO_ROOT_USER: ${AWS_ACCESS_KEY_ID:-minioadmin}
|
|
MINIO_ROOT_PASSWORD: ${AWS_SECRET_ACCESS_KEY:-minioadmin}
|
|
volumes:
|
|
- uploads:/export
|
|
ports:
|
|
- "9000:9000"
|
|
- "9090:9090"
|
|
|
|
volumes:
|
|
# Node/pnpm caches for speedy dev
|
|
|
|
# Infra data
|
|
pgdata:
|
|
redisdata:
|
|
rabbitmq_data:
|
|
uploads:
|