init commit

This commit is contained in:
2025-08-17 11:44:54 +09:00
commit 5592014530
59 changed files with 3175 additions and 0 deletions

20
docker/Dockerfile.api Normal file
View File

@@ -0,0 +1,20 @@
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libmariadb-dev \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
# нормализуем CRLF и даём +x
RUN sed -i 's/\r$//' docker/entrypoint.sh && chmod +x docker/entrypoint.sh
ENTRYPOINT ["bash", "/app/docker/entrypoint.sh"]
CMD ["uvicorn", "app.api.main:app", "--host", "0.0.0.0", "--port", "8000"]

28
docker/Dockerfile.base Normal file
View File

@@ -0,0 +1,28 @@
FROM python:3.12-slim AS base
ENV PYTHONUNBUFFERED=1 \
PIP_NO_CACHE_DIR=1
WORKDIR /app
# Системные зависимости (MariaDB client headers для asyncmy/pymysql)
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libmariadb-dev \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
# Устанавливаем зависимости проекта
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Копируем исходники
COPY . .
RUN apt-get update && apt-get install -y --no-install-recommends bash && rm -rf /var/lib/apt/lists/*
RUN sed -i 's/\r$//' docker/entrypoint.sh && chmod +x docker/entrypoint.sh
# В рантайме передаются переменные окружения из compose/.env
ENV TZ=Asia/Seoul
ENV DATABASE_URL=""
ENV DATABASE_URL_SYNC=""
ENV CELERY_BROKER_URL=""
ENV CELERY_RESULT_BACKEND=""

19
docker/Dockerfile.beat Normal file
View File

@@ -0,0 +1,19 @@
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libmariadb-dev \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN apt-get update && apt-get install -y --no-install-recommends bash && rm -rf /var/lib/apt/lists/*
RUN sed -i 's/\r$//' docker/entrypoint.sh && chmod +x docker/entrypoint.sh
ENTRYPOINT ["/app/docker/entrypoint.sh"]
CMD ["celery", "-A", "app.tasks.celery_app.celery_app", "beat", "-l", "INFO"]

19
docker/Dockerfile.bot Normal file
View File

@@ -0,0 +1,19 @@
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libmariadb-dev \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN apt-get update && apt-get install -y --no-install-recommends bash && rm -rf /var/lib/apt/lists/*
RUN sed -i 's/\r$//' docker/entrypoint.sh && chmod +x docker/entrypoint.sh
ENTRYPOINT ["/app/docker/entrypoint.sh"]
CMD ["python", "-m", "app.bots.editor_bot"]

18
docker/Dockerfile.worker Normal file
View File

@@ -0,0 +1,18 @@
FROM python:3.12-slim
ENV PYTHONUNBUFFERED=1 PIP_NO_CACHE_DIR=1
WORKDIR /app
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libmariadb-dev \
mariadb-client \
&& rm -rf /var/lib/apt/lists/*
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN apt-get update && apt-get install -y --no-install-recommends bash && rm -rf /var/lib/apt/lists/*
RUN sed -i 's/\r$//' docker/entrypoint.sh && chmod +x docker/entrypoint.sh
ENTRYPOINT ["/app/docker/entrypoint.sh"]
CMD ["celery", "-A", "app.tasks.celery_app.celery_app", "worker", "-l", "INFO"]

20
docker/entrypoint.sh Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
set -euo pipefail
echo "[entrypoint] Waiting for MariaDB at ${DB_HOST:-db}:${DB_PORT:-3306}..."
until mariadb -h "${DB_HOST:-db}" -P "${DB_PORT:-3306}" -u"${DB_USER:-root}" -p"${DB_PASSWORD:-}" -e "SELECT 1" >/dev/null 2>&1; do
sleep 1
done
echo "[entrypoint] MariaDB is up"
if [ "${RUN_MIGRATIONS:-true}" = "true" ]; then
if [ -f "/app/alembic.ini" ] && [ -d "/app/migrations" ]; then
echo "[entrypoint] Running alembic upgrade head"
alembic upgrade head || echo "[entrypoint] Alembic failed (non-fatal)"
else
echo "[entrypoint] Skipping alembic — no /app/migrations or alembic.ini"
fi
fi
echo "[entrypoint] Starting: $*"
exec "$@"