MyTetra Share
Делитесь знаниями!
Время создания: 09.12.2025 19:39
Автор: alensav
Текстовые метки: docker
Раздел: LINUX_уроки
Запись: alensav/MyTetra2/main/base/1765298348u8llh0cy8j/text.html на raw.githubusercontent.com

Вот готовый скрипт, который сделает всё:


✅ Создаст 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.


 
MyTetra Share v.0.67
Яндекс индекс цитирования