173 lines
6.7 KiB
Markdown
173 lines
6.7 KiB
Markdown
# Сайт-визитка grenu4.ru
|
||
|
||
Простой сайт-визитка на HTML, работающий в Docker-контейнере.
|
||
Сайт проксируется через **Nginx Proxy Manager**, который обеспечивает автоматический SSL-сертификат (Let's Encrypt) и доступ по домену.
|
||
|
||
## Содержание
|
||
|
||
- [Технологии](#технологии)
|
||
- [Требования](#требования)
|
||
- [Быстрый старт](#быстрый-старт)
|
||
- [Структура проекта](#структура-проекта)
|
||
- [Управление контейнером](#управление-контейнером)
|
||
- [Обновление сайта](#обновление-сайта)
|
||
- [Интеграция с Nginx Proxy Manager](#интеграция-с-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`)
|
||
|
||
## Быстрый старт
|
||
|
||
### Клонируйте репозиторий
|
||
|
||
```bash
|
||
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/ # Папка с изображениями (если есть)
|
||
|
||
### Управление контейнером
|
||
```bash
|
||
Если используется 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
|
||
```
|
||
|
||
### Обновление сайта
|
||
```bash
|
||
Если вы изменили 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
|
||
```bash
|
||
Ваш контейнер с сайтом не занимает порты 80/443 — они используются NPM.
|
||
Вся схема работы:
|
||
|
||
Пользователь заходит на https://grenu4.ru.
|
||
|
||
Запрос попадает в NPM (контейнер, слушающий 80/443 на хосте).
|
||
|
||
NPM по правилу прокси перенаправляет трафик на http://<хост>:5050.
|
||
|
||
Внутренний контейнер с сайтом отдаёт страницу.
|
||
|
||
Убедитесь, что порт 5050 на хосте доступен для NPM (обычно NPM и контейнер сайта находятся на одном хосте, поэтому проблем нет).
|
||
```
|
||
|
||
### Лицензия
|
||
```bash
|
||
Этот проект распространяется под лицензией MIT. Подробнее в файле LICENSE.
|
||
|
||
Автор: Y0zhyck
|
||
Домен: grenu4.ru
|
||
Репозиторий: https://git.grenu4.ru/y0zhyck/My-Site.git
|
||
``` |