docker composed

This commit is contained in:
2026-10-08 00:26:42 +03:00
parent 86bcd5b141
commit 728d342a89
14 changed files with 360 additions and 27 deletions
+18
View File
@@ -0,0 +1,18 @@
FROM python:3.11-slim
WORKDIR /app
# Устанавливаем зависимости
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# Копируем код
COPY . .
# Создаём директорию для БД внутри контейнера (будет смонтирована volume)
RUN mkdir -p /data
ENV PYTHONUNBUFFERED=1
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
+5 -4
View File
@@ -1,18 +1,19 @@
import os
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, declarative_base
SQLALCHEMY_DATABASE_URL = "sqlite:///./gym.db"
# По умолчанию используем локальный файл, но в Docker мы зададим env var
DB_PATH = os.getenv("GYM_DB_PATH", "./gym.db")
SQLALCHEMY_DATABASE_URL = f"sqlite:///{DB_PATH}"
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
connect_args={"check_same_thread": False} # только для SQLite
connect_args={"check_same_thread": False}
)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# Dependency
def get_db():
db = SessionLocal()
try:
+4 -1
View File
@@ -1,5 +1,6 @@
#!/usr/bin/env python3
import os
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from database import engine, Base
@@ -11,7 +12,9 @@ import routers.exercises
import routers.metrics
import routers.sync
# Создаём таблицы
# Гарантируем, что директория существует
os.makedirs(os.path.dirname(os.getenv("GYM_DB_PATH", "./gym.db")), exist_ok=True)
Base.metadata.create_all(bind=engine)
app = FastAPI(
+2
View File
@@ -1,3 +1,5 @@
-i https://mirror.yandex.ru/pypi/simple/
--trusted-host mirror.yandex.ru
fastapi==0.104.1
uvicorn[standard]==0.24.0
sqlalchemy==2.0.23