04d41ad5f7f61874a2cb999f7132c376614ba440
Сайт-визитка grenu4.ru
Простой сайт-визитка на HTML, работающий в Docker-контейнере.
Сайт проксируется через Nginx Proxy Manager, который обеспечивает автоматический SSL-сертификат (Let's Encrypt) и доступ по домену.
Содержание
- Технологии
- Требования
- Быстрый старт
- Структура проекта
- Управление контейнером
- Обновление сайта
- Интеграция с Nginx Proxy Manager
- Лицензия
Технологии
- HTML / CSS / JavaScript (статические файлы)
- Docker + Docker Compose
- Nginx (в качестве веб-сервера внутри контейнера)
- Nginx Proxy Manager (для прокси и SSL)
Требования
- Сервер с Linux (Ubuntu/Debian рекомендуется)
- Установленные Docker и Docker Compose
- Установленный и настроенный Nginx Proxy Manager (занимает порты 80 и 443)
- Домен, направленный на IP сервера (в примере
grenu4.ru)
Быстрый старт
Клонируйте репозиторий
git clone https://git.grenu4.ru/y0zhyck/My-Site.git
cd grenu4-site
2. Поместите файлы сайта
В папке проекта уже должен лежать index.html и другие ресурсы (css, js, изображения).
При необходимости замените их своими.
3. Запустите контейнер
Вариант A: через docker-compose (рекомендуется)
bash
docker-compose up -d
Вариант B: через docker run
bash
docker build -t grenu4-site .
docker run -d \
--name site-grenu4 \
-p 5050:80 \
--restart unless-stopped \
grenu4-site
После запуска сайт будет доступен локально на порту 5050:
http://<IP-сервера>:5050
4. Настройте прокси в Nginx Proxy Manager
Откройте веб-интерфейс NPM (обычно http://<IP-сервера>:81)
Добавьте Proxy Host:
Domain: grenu4.ru (и www.grenu4.ru при необходимости)
Scheme: http
Forward Hostname / IP: IP вашего сервера (например, 192.168.1.10)
Если NPM и сайт на одном сервере, можно использовать 127.0.0.1, но убедитесь, что NPM имеет доступ к порту 5050 хоста.
Forward Port: 5050
Во вкладке SSL включите Request a new SSL certificate, укажите email и включите Force SSL.
Через несколько минут сайт станет доступен по https://grenu4.ru
Структура проекта
- Dockerfile # Описание образа на основе nginx:alpine
- docker-compose.yml # (опционально) для управления через compose
- README.md # Этот файл
- index.html # Главная страница
- css/ # Папка со стилями (если есть)
- js/ # Папка со скриптами (если есть)
- img/ # Папка с изображениями (если есть)
Управление контейнером
Если используется docker-compose
Управление контейнером
Если используется docker-compose
Запуск / перезапуск после изменений
bash
docker-compose up -d --build
Остановка и удаление контейнера
bash
docker-compose down
Просмотр логов
bash
docker-compose logs -f
Если используется чистый docker
Остановка
bash
docker stop site-grenu4
Удаление
bash
docker rm site-grenu4
Запуск существующего контейнера
bash
docker start site-grenu4
Пересборка и запуск после изменений
bash
docker build -t grenu4-site .
docker rm -f site-grenu4
docker run -d --name site-grenu4 -p 5050:80 --restart unless-stopped grenu4-site
Обновление сайта
Если вы изменили HTML / CSS / JS, нужно обновить контейнер.
Быстрый способ с docker-compose (пересборка и запуск)
bash
docker-compose up -d --build
Если используется только docker
bash
docker build -t grenu4-site .
docker stop site-grenu4 && docker rm site-grenu4
docker run -d --name site-grenu4 -p 5050:80 --restart unless-stopped grenu4-site
Альтернатива: монтирование папки (для разработки)
Чтобы избежать пересборки при каждом изменении, можно примонтировать локальную папку с файлами внутрь контейнера.
В docker-compose.yml добавьте:
yaml
services:
site:
volumes:
- ./:/usr/share/nginx/html
После этого изменения в файлах будут видны сразу (перезапуск не требуется).
Не используйте это на production без дополнительной оптимизации.
Интеграция с Nginx Proxy Manager
Ваш контейнер с сайтом не занимает порты 80/443 — они используются NPM.
Вся схема работы:
Пользователь заходит на https://grenu4.ru.
Запрос попадает в NPM (контейнер, слушающий 80/443 на хосте).
NPM по правилу прокси перенаправляет трафик на http://<хост>:5050.
Внутренний контейнер с сайтом отдаёт страницу.
Убедитесь, что порт 5050 на хосте доступен для NPM (обычно NPM и контейнер сайта находятся на одном хосте, поэтому проблем нет).
Лицензия
Этот проект распространяется под лицензией MIT. Подробнее в файле LICENSE.
Автор: Y0zhyck
Домен: grenu4.ru
Репозиторий: https://git.grenu4.ru/y0zhyck/My-Site.git
Description
Languages
HTML
99.7%
Dockerfile
0.3%