Files
web-hosts/chuckie.coppertone.tech/app/podman-compose.dev.yml
2025-12-26 13:38:04 +01:00

136 lines
5.2 KiB
YAML

version: '3.8'
services:
canva-connector-db:
image: postgres:16-alpine
environment:
- POSTGRES_USER=canva
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-change-me}
- POSTGRES_DB=canva_connector
ports:
- "5432:5432"
volumes:
- canva-connector-db:/var/lib/postgresql/data
restart: unless-stopped
canva-connector-dev:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "3000:3000"
command: ["sh", "-c", "cd frontend && pnpm dev --host"]
volumes:
- ./frontend:/home/node/app/frontend
- /home/node/app/frontend/node_modules
environment:
- CI=true
- NODE_ENV=development
- VITE_CANVA_CLIENT_ID=${CANVA_CLIENT_ID:-}
- VITE_CANVA_CLIENT_SECRET=${CANVA_CLIENT_SECRET:-}
- VITE_AUTH0_DOMAIN=${VITE_AUTH0_DOMAIN:-}
- VITE_AUTH0_CLIENT_ID=${VITE_AUTH0_CLIENT_ID:-}
- VITE_AUTH0_AUDIENCE=${VITE_AUTH0_AUDIENCE:-}
- VITE_AUTH0_REDIRECT_URI=${VITE_AUTH0_REDIRECT_URI:-http://localhost:3000/callback}
stdin_open: true
tty: true
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "fetch('http://127.0.0.1:3000/').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"]
interval: 30s
timeout: 5s
retries: 5
working_dir: /home/node/app
canva-app-dev:
build:
context: .
dockerfile: Dockerfile.dev
ports:
- "8081:8080"
command: ["sh", "-c", "cd canva-app && if [ ! -f node_modules/vite/bin/vite.js ]; then pnpm install --shamefully-hoist --no-frozen-lockfile; fi; pnpm dev --host 0.0.0.0 --port 8080"]
volumes:
- ./canva-app:/home/node/app/canva-app
- /home/node/app/canva-app/node_modules
environment:
- CI=true
- NODE_ENV=development
stdin_open: true
tty: true
restart: unless-stopped
working_dir: /home/node/app
canva-connector-api:
build:
context: .
dockerfile: Dockerfile.api.dev
network_mode: host
volumes:
# Mount source code for live reloading
- ./server-go:/app/server-go
# Persist session store between container restarts
- canva-connector-api-data:/app/data
environment:
- CANVA_CLIENT_ID=${CANVA_CLIENT_ID:-}
- CANVA_CLIENT_SECRET=${CANVA_CLIENT_SECRET:-}
- CANVA_REDIRECT_URI=${CANVA_REDIRECT_URI:-http://127.0.0.1:4000/auth/canva/callback}
- FRONTEND_SUCCESS_URL=${FRONTEND_SUCCESS_URL:-http://localhost:3000/connect}
- FRONTEND_SETTINGS_URL=${FRONTEND_SETTINGS_URL:-http://localhost:3000/settings}
- CANVA_SCOPES
- CANVA_SCOPES_MIN=${CANVA_SCOPES_MIN:-}
- CANVA_SCOPE_DEFAULT=${CANVA_SCOPE_DEFAULT:-full}
- AUTH_JWT_SECRET=${AUTH_JWT_SECRET:-}
- AUTH_JWT_TTL_HOURS=${AUTH_JWT_TTL_HOURS:-24}
- AUTH_USER_STORE_PATH=${AUTH_USER_STORE_PATH:-/app/data/users.json}
- YT_CLIENT_ID=${YT_CLIENT_ID:-}
- YT_CLIENT_SECRET=${YT_CLIENT_SECRET:-}
- YT_REFRESH_TOKEN=${YT_REFRESH_TOKEN:-}
- YT_REDIRECT_URI=${YT_REDIRECT_URI:-http://127.0.0.1:4000/auth/youtube/callback}
- YT_SCOPES=${YT_SCOPES:-}
- X_BEARER_TOKEN=${X_BEARER_TOKEN:-}
- AUTH0_DOMAIN=${AUTH0_DOMAIN:-}
- AUTH0_AUDIENCE=${AUTH0_AUDIENCE:-}
- AUTH_JWT_SECRET=${AUTH_JWT_SECRET:-}
- AUTH_JWT_TTL_HOURS=${AUTH_JWT_TTL_HOURS:-24}
- AUTH_USER_STORE_PATH=${AUTH_USER_STORE_PATH:-data/users.json}
- USER_SETTINGS_STORE_PATH=${USER_SETTINGS_STORE_PATH:-data/user_settings.json}
- ALLOW_SESSION_AUTH=${ALLOW_SESSION_AUTH:-true}
- DATABASE_URL=${DATABASE_URL:-postgres://canva:${POSTGRES_PASSWORD:-change-me}@127.0.0.1:5432/canva_connector?sslmode=disable}
- ENCRYPTION_KEY=${ENCRYPTION_KEY:-}
- X_USER_ACCESS_TOKEN=${X_USER_ACCESS_TOKEN:-}
- X_CLIENT_ID=${X_CLIENT_ID:-}
- X_CLIENT_SECRET=${X_CLIENT_SECRET:-}
- X_REDIRECT_URI=${X_REDIRECT_URI:-http://127.0.0.1:4000/auth/x/callback}
- X_SCOPES=${X_SCOPES:-}
- TIKTOK_ACCESS_TOKEN=${TIKTOK_ACCESS_TOKEN:-}
- TIKTOK_OPEN_ID=${TIKTOK_OPEN_ID:-}
- TIKTOK_PUBLISH_URL=${TIKTOK_PUBLISH_URL:-https://open.tiktokapis.com/v2/post/publish/video/init/}
- TIKTOK_PUBLISH_STATUS_URL=${TIKTOK_PUBLISH_STATUS_URL:-https://open.tiktokapis.com/v2/post/publish/status/fetch/}
- TIKTOK_CLIENT_KEY=${TIKTOK_CLIENT_KEY:-}
- TIKTOK_CLIENT_SECRET=${TIKTOK_CLIENT_SECRET:-}
- TIKTOK_REDIRECT_URI=${TIKTOK_REDIRECT_URI:-http://127.0.0.1:4000/auth/tiktok/callback}
- TIKTOK_SCOPES=${TIKTOK_SCOPES:-}
- FB_APP_ID=${FB_APP_ID:-}
- FB_APP_SECRET=${FB_APP_SECRET:-}
- FB_REDIRECT_URI=${FB_REDIRECT_URI:-http://127.0.0.1:4000/auth/facebook/callback}
- FB_SCOPES=${FB_SCOPES:-}
- FB_GRAPH_VERSION=${FB_GRAPH_VERSION:-v19.0}
- FB_PAGE_ID=${FB_PAGE_ID:-}
- FB_PAGE_ACCESS_TOKEN=${FB_PAGE_ACCESS_TOKEN:-}
- IG_USER_ID=${IG_USER_ID:-}
- IG_ACCESS_TOKEN=${IG_ACCESS_TOKEN:-}
- IG_GRAPH_VERSION=${IG_GRAPH_VERSION:-v19.0}
- SESSION_STORE_PATH=/app/data/sessions.json
depends_on:
- canva-connector-db
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://127.0.0.1:4000/ready"]
interval: 30s
timeout: 5s
retries: 5
volumes:
canva-connector-api-data:
canva-connector-db: