📝 Fastapi

Деплой FastAPI с Docker

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

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

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)

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

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

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

🔗 Похожие

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

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

📝

Event loop в Python: как asyncio делает «параллел…

Event loop — сердце asyncio. Он не запускает код параллельно в нескольких потоках. Он переключается...

📅 30.06.2026 👁️ 123
📝

run_in_executor и anyio: sync-библиотеки в async …

Иногда нужно вызвать синхронную библиотеку из async кода не блокируя event loop.

📅 30.06.2026 👁️ 101
📝

Async context managers: async with и @asynccontex…

Async context managers управляют ресурсами в async коде — соединениями, файлами, транзакциями.

📅 30.06.2026 👁️ 108

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!