136 lines
5.2 KiB
YAML
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:
|