Вот готовый скрипт, который сделает всё:
✅ Создаст index.html в томе mydata.
✅ Запустит Nginx с пробросом порта 8080 на хост.
✅ Откроет браузер с адресом http://localhost:8080.
📜 Скрипт: ~/start-nginx-web.sh
Скопируй и сохрани в файл ~/start-nginx-web.sh:
bash
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
#!/bin/bash# Имя тома и контейнераVOLUME_NAME="mydata"CONTAINER_NAME="my-nginx"# Путь к index.html внутри томаINDEX_PATH="/app/data/index.html"# Создаем директорию для данных (если нужно — для локального теста)mkdir -p ~/nginx-data# Создаем index.htmlcat > ~/nginx-data/index.html << 'EOF'<!DOCTYPE html><html lang="ru"><head> <meta charset="UTF-8"> <title>Привет от Nginx!</title> <style> body { font-family: Arial, sans-serif; background: #f4f4f4; padding: 20px; text-align: center; } h1 { color: #2c3e50; } .container { max-width: 600px; margin: 0 auto; } .footer { font-size: 0.8em; color: #7f8c8d; margin-top: 20px; } </style></head><body> <div class="container"> <h1>🎉 Привет от Nginx!</h1> <p>Этот контент обслуживается из Docker-тома <code>mydata</code>.</p> <p>Ты запустил это через скрипт — молодец!</p> <div class="footer">Запущено на $(hostname) в $(date)</div> </div></body></html>EOFecho "✅ Файл index.html создан."# Копируем index.html в том (если том уже существует — перезаписываем)docker run --rm -v $VOLUME_NAME:/app/data alpine sh -c "cp /tmp/index.html /app/data/ && chown -R 101:101 /app/data/"# Удаляем старый контейнер (если есть)if docker ps -a --format '{{.Names}}' | grep -q "^$CONTAINER_NAME$"; then echo "🛑 Останавливаем старый контейнер..." docker stop $CONTAINER_NAME >/dev/null 2>&1 docker rm $CONTAINER_NAME >/dev/null 2>&1fi# Запускаем новый контейнерecho "🚀 Запускаем Nginx в фоновом режиме..."docker run -d \ --name $CONTAINER_NAME \ -p 8080:80 \ -v $VOLUME_NAME:/app/data \ nginx# Ждём 3 секунды, чтобы сервер стартовалsleep 3# Проверяем, работает лиif curl -s http://localhost:8080 >/dev/null 2>&1; then echo "✅ Nginx доступен по http://localhost:8080" # Открываем в браузере if command -v xdg-open >/dev/null 2>&1; then xdg-open http://localhost:8080 & elif command -v gnome-open >/dev/null 2>&1; then gnome-open http://localhost:8080 & else echo "🌐 Открой вручную: http://localhost:8080" fielse echo "❌ Nginx не ответил. Проверь логи:" docker logs $CONTAINER_NAMEfiecho "✨ Готово!"
🔧 Как использовать
Сохрани скрипт:
bash
1
nano ~/start-nginx-web.sh
→ Вставь код выше.
Сделай исполняемым:
bash
1
chmod +x ~/start-nginx-web.sh
Запусти:
bash
1
~/start-nginx-web.sh
🔄 Что делает при каждом запуске:
Перезаписывает index.html в томе mydata.
Удаляет старый контейнер (если есть).
Запускает новый Nginx с пробросом порта 8080.
Открывает страницу в браузере.
🗑️ Чтобы остановить и очистить:
bash
1234
docker stop my-nginxdocker rm my-nginx# Если хочешь удалить данные:# docker volume rm mydata
💡 Советы
Можешь редактировать ~/nginx-data/index.html — изменения будут видны после перезапуска контейнера.
Если хочешь, чтобы Nginx слушал порт 80 — запусти с sudo, но тогда нужен --cap-add=NET_BIND_SERVICE или --privileged.
Для продакшена лучше использовать docker-compose.yml.