mirror of
https://github.com/dartdavros/chatballs.git
synced 2026-10-05 01:14:58 +03:00
- каталог code/custocrm → code/chatballs; CLI custocrm → chatballs; пакеты hub_platform → chatballs, hub_backend → chatballs_backend (app labels прежние) - переменные CUS_* и CUSTOCRM_* → CHATBALLS_*; образы chatballs-*; compose-проект и база chatballs (были edevs_hub); роли Postgres chatballs_* (были custocrm_*); схема RLS chatballs и GUC chatballs.organization_id; cookie chatballs_* - CI: APP_DIR code/chatballs, DEPLOY_ROOT /opt/chatballs - deploy/migrate/rename-to-chatballs.sh — миграция существующей установки без потери данных: остановка старого проекта, .env (с резервной копией), переименование суперпользователя initdb через временную роль, остальных ролей, базы, схемы и функции RLS; проверено на локальном стеке - dev-стек хранит Postgres в bind-mount data/postgres, как prod (именованный том compose.dev был устаревшим снимком и вводил в заблуждение) - снятие демо удаляет объекты, созданные поверх демо-данных тестировавшим (звонки по демо-диалогу), вместо падения на PROTECT - реальные домены *.custocrm.ru и идентификаторы документов не тронуты Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
41 lines
1.6 KiB
Docker
41 lines
1.6 KiB
Docker
FROM python:3.12-slim
|
|
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
PYTHONUNBUFFERED=1 \
|
|
PIP_NO_CACHE_DIR=1
|
|
|
|
WORKDIR /app
|
|
|
|
RUN addgroup --system hub && adduser --system --ingroup hub hub
|
|
|
|
COPY apps/backend/requirements.txt /app/apps/backend/requirements.txt
|
|
RUN pip install --no-cache-dir -r /app/apps/backend/requirements.txt
|
|
|
|
COPY apps/backend /app/apps/backend
|
|
COPY content /app/content
|
|
|
|
# collectstatic в образе (ADR-HUB-0028): STATIC_ROOT испечён, runtime-шаг не нужен.
|
|
# Build-time secret нужен только чтобы settings загрузились в production-режиме;
|
|
# collectstatic не обращается к БД/Redis/S3. whitenoise раздаёт static в runtime.
|
|
# Build-time dummy values satisfy C04 runtime guards (distinct DB users in
|
|
# settings_database, S3 bucket in settings_storage) that only matter at runtime;
|
|
# collectstatic touches neither. Runtime values come from instance .env.
|
|
RUN cd apps/backend && CHATBALLS_SECRET_KEY=collectstatic-build CHATBALLS_DEBUG=false CHATBALLS_ENV=production \
|
|
CHATBALLS_DELIVERY_MODE=CLOUD \
|
|
CHATBALLS_APP_ALLOWED_HOSTS=collectstatic.invalid \
|
|
CHATBALLS_HELP_PUBLIC_IPV4=127.0.0.1 \
|
|
POSTGRES_APP_USER=build-app \
|
|
POSTGRES_PLATFORM_USER=build-platform \
|
|
POSTGRES_MIGRATION_USER=build-migration \
|
|
CHATBALLS_S3_BUCKET=build-placeholder \
|
|
python manage.py collectstatic --noinput
|
|
|
|
RUN chown -R hub:hub /app
|
|
|
|
WORKDIR /app/apps/backend
|
|
|
|
USER hub
|
|
EXPOSE 8000
|
|
|
|
CMD ["gunicorn", "chatballs_backend.wsgi_app:application", "--bind", "0.0.0.0:8000", "--workers", "3", "--timeout", "60"]
|