cc-dashboard/docker-compose.yml
Vadym Samoilenko e401f9a60b feat(planka): add Planka kanban to docker-compose + wire UI
- docker-compose: add planka + planka-db services (port 1337, isolated volume)
- apache.conf: add ProxyPass /board/ → localhost:1337
- .env.example: add PLANKA_SECRET_KEY + PLANKA_BASE_URL
- Sidebar: rename Planner → Tasks, open /board in new tab via <a>
- Router: remove /planner route
- Delete PlannerView.vue, TaskList.vue, TaskCard.vue (Calendar keeps TaskForm)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-07 12:15:25 +01:00

67 lines
1.7 KiB
YAML

services:
app:
build: .
ports:
- "8800:8800"
env_file: .env
depends_on:
db:
condition: service_healthy
restart: unless-stopped
volumes:
- ./src/static:/app/src/static:ro # hot-reload static files without rebuild
db:
image: postgres:16-alpine
volumes:
- pgdata:/var/lib/postgresql/data
environment:
POSTGRES_DB: cc_dashboard
POSTGRES_USER: cc_app
POSTGRES_PASSWORD: ${DB_PASSWORD}
healthcheck:
test: ["CMD-SHELL", "pg_isready -U cc_app -d cc_dashboard"]
interval: 5s
timeout: 3s
retries: 10
restart: unless-stopped
planka:
image: ghcr.io/plankanban/planka:latest
restart: unless-stopped
ports:
- "1337:1337"
environment:
BASE_URL: ${PLANKA_BASE_URL:-https://optical-dev.oliver.solutions/board}
DATABASE_URL: postgresql://planka:planka@planka-db:5432/planka
SECRET_KEY: ${PLANKA_SECRET_KEY}
TRUST_PROXY: "1"
volumes:
- planka-avatars:/app/public/user-avatars
- planka-backgrounds:/app/public/project-background-images
- planka-attachments:/app/private/attachments
depends_on:
planka-db:
condition: service_healthy
planka-db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: planka
POSTGRES_USER: planka
POSTGRES_PASSWORD: planka
volumes:
- planka-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U planka -d planka"]
interval: 5s
timeout: 3s
retries: 10
volumes:
pgdata:
planka-db-data:
planka-avatars:
planka-backgrounds:
planka-attachments: