Shop — Интернет-магазин

Главная страница интернет-магазина на Go, PostgreSQL 17, Docker Compose и Caddy (обратный прокси + SSL).

Стек

Компонент Технология
Backend Go 1.23, net/http, pgx/v5
База данных PostgreSQL 17
Прокси / SSL Caddy 2
Контейнеризация Docker Compose

Быстрый старт

# Скопировать переменные окружения
cp .env.example .env

# Запустить все сервисы
docker compose up --build -d

# Открыть в браузере
# http://localhost
# http://localhost/admin/login — админка

Админ

Администратор создаётся автоматически при старте из .env:

ADMIN_EMAIL=admin@shop.local
ADMIN_PASSWORD=change_me
SESSION_SECRET=your_random_secret_key_here

Вход: http://localhost/admin/login

При изменении ADMIN_PASSWORD пароль обновится в БД при следующем запуске.

Сервисы

Сервис Порт Описание
Caddy 80, 443 Обратный прокси, SSL
App 8080 (внутри) Go-приложение
PostgreSQL 5432 (внутри) База данных
Caddy Admin 2019 Панель управления Caddy

SSL в продакшене

  1. Укажите домен в .env:

    DOMAIN=shop.example.com
    
  2. Обновите Caddyfile — раскомментируйте блок с {$DOMAIN} и закомментируйте :80.

  3. Убедитесь, что порты 80 и 443 открыты. Caddy автоматически получит сертификат Let's Encrypt.

Локальная разработка без Docker

# Запустить только PostgreSQL
docker compose up db -d

# Установить зависимости и запустить приложение
go mod tidy
go run ./cmd/shop

# http://localhost:8080

Структура проекта

shop/
├── cmd/shop/main.go          # Точка входа
├── internal/
│   ├── database/             # Подключение к PostgreSQL
│   ├── handlers/             # HTTP-обработчики, шаблоны, статика
│   ├── models/               # Модели данных
│   └── repository/           # Запросы к БД
├── migrations/               # SQL-миграции
├── Caddyfile                 # Конфигурация Caddy
├── docker-compose.yml
└── Dockerfile

API

Метод Путь Описание
GET / Главная страница
GET /health Health check
GET /static/* CSS и статика
GET /admin/login Страница входа
POST /admin/login Авторизация
GET /admin/ Админ-панель
POST /admin/logout Выход

Остановка

docker compose down

# С удалением данных БД
docker compose down -v
S
Description
No description provided
Readme
128 KiB
1.0
Latest
2026-06-26 16:04:10 +00:00
Languages
Go 50.4%
HTML 29.9%
CSS 14.6%
Shell 4.3%
Makefile 0.5%
Other 0.3%