writekit/docker-compose.yml

120 lines
3 KiB
YAML
Raw Normal View History

2026-01-09 00:16:46 +02:00
services:
traefik:
image: traefik:v3.2
command:
- --api.insecure=true
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
- "8888:8080"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
postgres:
image: postgres:16-alpine
environment:
POSTGRES_USER: writekit
POSTGRES_PASSWORD: writekit
POSTGRES_DB: writekit
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U writekit"]
interval: 5s
timeout: 5s
retries: 5
imaginary:
image: h2non/imaginary:latest
command: -enable-url-source=false -max-allowed-size=15728640
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
minio-init:
image: minio/mc:latest
depends_on:
- minio
entrypoint: >
/bin/sh -c "
sleep 2;
mc alias set local http://minio:9000 minioadmin minioadmin;
mc mb local/writekit --ignore-existing;
mc anonymous set download local/writekit;
exit 0;
"
vite:
image: node:20-alpine
working_dir: /app/studio
environment:
- CHOKIDAR_USEPOLLING=true
- CHOKIDAR_INTERVAL=100
command: sh -c "npm install && npm run dev -- --host"
volumes:
- ./studio:/app/studio
- vite_node_modules:/app/studio/node_modules
app:
image: cosmtrek/air
working_dir: /app
depends_on:
postgres:
condition: service_healthy
environment:
air_wd: /app
ENV: local
VITE_URL: http://vite:5173
DATABASE_URL: postgres://writekit:writekit@postgres:5432/writekit?sslmode=disable
DOMAIN: writekit.lvh.me
BASE_URL: http://writekit.lvh.me
DATA_DIR: /data
SESSION_SECRET: dev-secret-change-in-prod-must-be-32-chars
IMAGINARY_URL: http://imaginary:9000
R2_ACCOUNT_ID: local
R2_ACCESS_KEY_ID: minioadmin
R2_SECRET_ACCESS_KEY: minioadmin
R2_BUCKET: writekit
R2_PUBLIC_URL: http://localhost:9000/writekit
R2_ENDPOINT: http://minio:9000
GITHUB_CLIENT_ID: ${GITHUB_CLIENT_ID:-}
GITHUB_CLIENT_SECRET: ${GITHUB_CLIENT_SECRET:-}
JARVIS_URL: http://jarvis:8090
volumes:
- .:/app
- app_data:/data
- go_mod:/go/pkg/mod
labels:
- traefik.enable=true
- traefik.http.routers.app.rule=HostRegexp(`writekit.lvh.me`) || HostRegexp(`{subdomain:[a-z0-9-]+}.writekit.lvh.me`)
- traefik.http.routers.app.entrypoints=web
- traefik.http.services.app.loadbalancer.server.port=8080
jarvis:
build:
context: ../jarvis
ports:
- "8090:8090"
- "9999:9999"
environment:
PORT: "8090"
LSP_PORT: "9999"
volumes:
postgres_data:
minio_data:
app_data:
go_mod:
vite_node_modules: