📝 Fastapi

Деплой FastAPI с Docker

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
341
🌳
Уровень
Продвинутый

В этой инструкции FastAPI-приложение и PostgreSQL запускаются в отдельных контейнерах, а конфиденциальные настройки передаются через переменные окружения.

Dockerfile

FROM python:3.12-slim

WORKDIR /app

# Зависимости отдельно для кэша слоёв
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

requirements.txt

fastapi
uvicorn[standard]
sqlmodel
python-jose[cryptography]
passlib[bcrypt]

.dockerignore

.git
.env
__pycache__
*.pyc
.pytest_cache

docker-compose.yml

version: "3.9"

services:
  api:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:pass@db/mydb
      - SECRET_KEY=${SECRET_KEY}
    depends_on:
      db:
        condition: service_healthy

  db:
    image: postgres:16
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U user"]
      interval: 5s
      timeout: 5s
      retries: 5

volumes:
  postgres_data:

Запуск

docker compose up --build
docker compose up -d        # в фоне
docker compose logs -f api  # логи
docker compose down         # остановить

Миграции в Docker

# В docker-compose.yml добавить команду
services:
  api:
    command: >
      sh -c "alembic upgrade head && uvicorn main:app --host 0.0.0.0 --port 8000"

Деплой на Railway

# railway.toml
[build]
builder = "dockerfile"

[deploy]
startCommand = "uvicorn main:app --host 0.0.0.0 --port $PORT"

Или Railway автоматически найдёт Dockerfile.

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Middleware и CORS в FastAPI

Middleware обрабатывает запросы и ответы вокруг маршрутов FastAPI, а CORS определяет, какие браузерные источники могут...

📅 30.06.2026 👁️ 330
📝

HTTPException в FastAPI

Охватываемые темы: Базовое использование, Коды статуса, Детали ошибки, Кастомные заголовки.

📅 30.06.2026 👁️ 297
📝

Dependency Injection в FastAPI

Depends — система внедрения зависимостей FastAPI для переиспользования кода.

📅 30.06.2026 👁️ 304
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

FastAPI: от первого маршрута до AI-сайта Открыть программу курса