Простой шаблон сайта-портфолио / домашней страницы с минимальным бэком на Go: HTML-шаблоны, статические файлы и контент из каталога content.
• Лёгкий сервер на Go для отдачи страниц и ассетов.
• Шаблоны в каталоге templates/ и статические файлы в static/.
• Контент отделён от представления (каталог content/).
• Готовые Docker/Docker Compose манифесты для развёртывания.
content/ # Данные/контент сайта (тексты, изображения и т.п.)
static/ # CSS/JS/изображения
templates/ # HTML-шаблоны
main.go # Входная точка Go-сервера
go.mod, go.sum # Модуль Go
Dockerfile # Образ для продакшена
docker-compose.yml # Локальный запуск и/или развёртывание
Быстрый старт (локально, без Docker)
Требования: установлен Go (1.21+).
Клонирование
git clone https://github.com/pixfid/portfolio-website.git
cd portfolio-website
Запуск
go run ./
# или сборка
go build -o portfolio
./portfolio
По умолчанию сервер слушает порт 8080 (или значение из переменной окружения PORT).
Переменные окружения
PORT — HTTP-порт (по умолчанию 8080).
# Сборка образа
docker build -t portfolio-website .
# Запуск контейнера
docker run --rm -p 8080:8080 \
-e PORT=8080 \
portfolio-website
docker compose up --build
По необходимости отредактируйте docker-compose.yml (порты, тома для контента и т.п.).
• Тексты/данные — в content/ (можно разложить по подпапкам).
• Шаблоны страниц — в templates/.
• Статика (CSS/JS/изображения) — в static/.
• В один контейнер на VPS/VM: Docker + reverse‑proxy (Caddy/Traefik/Nginx), HTTPS через Let’s Encrypt.
• Systemd‑сервис: собрать бинарник и описать unit с переменными окружения.
Дальнейшие улучшения (идеи)
• i18n (многоязычность) и переключатель темы (светлая/тёмная).
• Health‑check /healthz и метрики Prometheus.