Replace the entire Python/FastAPI backend with a Node.js/TypeScript stack: - Framework: Hono + @hono/node-server - Templates: Nunjucks (.njk) replacing Jinja2 (.html) - ORM: Drizzle ORM with mysql2 (same MariaDB schema, no migrations needed) - Sessions: hono-sessions with CookieStore - CSS: Pico CSS v2 replacing Bootstrap 5 (Bootstrap Icons CDN kept) - Dev: tsx watch; Prod: tsc + node dist/index.js Original Python app preserved in web-python/ as backup. Updated Dockerfile.web and docker-compose.yml for Node.js deployment. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
36 lines
1018 B
YAML
36 lines
1018 B
YAML
version: "3.8"
|
|
|
|
services:
|
|
web:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.web
|
|
ports:
|
|
- "8080:3000"
|
|
environment:
|
|
- DATABASE_URL=mysql://${DB_USER}:${DB_PASSWORD}@host.docker.internal:3306/${DB_NAME}
|
|
- SECRET_KEY=${SECRET_KEY:-change-me-in-production}
|
|
- BASE_URL=${BASE_URL:-https://evosync.ru}
|
|
- EVOTOR_APP_ID=${EVOTOR_APP_ID}
|
|
- EVOTOR_WEBHOOK_SECRET=${EVOTOR_WEBHOOK_SECRET}
|
|
- VK_CLIENT_ID=${VK_CLIENT_ID}
|
|
- VK_CLIENT_SECRET=${VK_CLIENT_SECRET}
|
|
- JIVOSITE_WIDGET_ID=${JIVOSITE_WIDGET_ID}
|
|
- NODE_ENV=production
|
|
- VK_DEFAULT_PHOTO_PATH=/app/default_product.png
|
|
volumes:
|
|
- ./5393364294319597854.png:/app/default_product.png:ro
|
|
restart: unless-stopped
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
|
|
# sync:
|
|
# build:
|
|
# context: .
|
|
# dockerfile: Dockerfile
|
|
# volumes:
|
|
# - ./evo:/var/www/evo
|
|
# - ./vk:/var/www/vk
|
|
# - ./run:/var/www/run
|
|
# - ./logs:/var/www/logs
|