66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
# Pitopn — магазин цифровых товаров
|
||
#
|
||
# Стек: FastAPI (Python) + PostgreSQL 17 + Docker Compose
|
||
# Деплой: Dokploy (Compose)
|
||
|
||
## Быстрый старт локально
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
docker compose up --build -d
|
||
```
|
||
|
||
Откройте http://localhost:8000
|
||
|
||
Проверка здоровья: http://localhost:8000/health
|
||
|
||
## Переменные окружения
|
||
|
||
Скопируйте `.env.example` в `.env` и задайте сильные пароли:
|
||
|
||
| Переменная | Описание |
|
||
|---|---|
|
||
| `APP_NAME` | Название магазина |
|
||
| `SECRET_KEY` | Секрет приложения |
|
||
| `POSTGRES_USER` | Пользователь БД |
|
||
| `POSTGRES_PASSWORD` | Пароль БД |
|
||
| `POSTGRES_DB` | Имя БД |
|
||
| `APP_PORT` | Внешний порт (по умолчанию 8000) |
|
||
|
||
## Деплой в Dokploy
|
||
|
||
1. Создайте проект **Compose** / **Docker Compose**.
|
||
2. Подключите этот репозиторий (или загрузите файлы).
|
||
3. Укажите `docker-compose.yml` как compose-файл.
|
||
4. В Environment добавьте переменные из `.env.example` (особенно `POSTGRES_PASSWORD` и `SECRET_KEY`).
|
||
5. В Domains привяжите домен к сервису `web` на порт **8000**.
|
||
6. Deploy.
|
||
|
||
База `db` не публикуется наружу — только внутри сети Compose. Данные PostgreSQL хранятся в volume `postgres_data`.
|
||
|
||
## Структура
|
||
|
||
```
|
||
app/
|
||
main.py # FastAPI + главная страница
|
||
models.py # Product, Category
|
||
seed.py # демо-товары при первом запуске
|
||
templates/ # Jinja2
|
||
static/ # CSS/JS
|
||
Dockerfile
|
||
docker-compose.yml
|
||
```
|
||
|
||
## Локальная разработка без Docker (опционально)
|
||
|
||
Нужен PostgreSQL 17 и Python 3.12+:
|
||
|
||
```bash
|
||
python -m venv .venv
|
||
# Windows:
|
||
.venv\Scripts\activate
|
||
pip install -r requirements.txt
|
||
# в .env укажите POSTGRES_HOST=localhost
|
||
uvicorn app.main:app --reload --port 8000
|
||
```
|