1.7 KiB
1.7 KiB
Стратегия деплоя
Decision Tree
graph TD
A[Как деплоить?] --> B{Один сервер?}
B -->|Да| C[Docker-compose]
B -->|Нет| D{Нужна оркестрация?}
D -->|Да| E[Kubernetes]
D -->|Нет| F[Docker-compose + несколько серверов]
C --> G{VPS или облако?}
G -->|VPS| H[Ubuntu + systemd]
G -->|Облако| I[Docker + cloud provider]
Варианты
Docker-compose (рекомендован для старта)
services:
app:
build: .
ports: ["8020:8020"]
env_file: .env
db:
image: postgres:14
volumes: ["pgdata:/var/lib/postgresql/data"]
redis:
image: redis:7
worker:
build: .
command: celery -A app.tasks worker -l info
Systemd (без Docker, VPS)
[Unit]
Description=VoIdea API
[Service]
ExecStart=/home/voidea/venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8020
WorkingDirectory=/home/voidea
Restart=always
[Install]
WantedBy=multi-user.target
CI/CD
Рекомендуется: GitHub Actions
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: "3.12" }
- run: pip install -r requirements.txt
- run: ruff check
- run: pytest
[ASK]
- Docker или без Docker? (Docker для воспроизводимости)
- VPS или облако? (VPS дешевле, облако масштабируемее)
- CI/CD какой? (GitHub Actions — бесплатно для публичных репозиториев)
- Нужен ли staging? (да, перед production)