@@ -0,0 +1,65 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user