From 76d8960bfb787c1a187f7634788af0daf6f5c1d0 Mon Sep 17 00:00:00 2001 From: Yan Kasabutski Date: Mon, 17 Mar 2025 21:47:27 +0000 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D1=82=D1=8C=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20=C2=AB?= =?UTF-8?q?z1=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- z1/Dockerfile | 15 ++++++++++ z1/README.md | 67 ++++++++++++++++++++++++++++++++++++++++++ z1/Yan .zip | Bin 0 -> 4032 bytes z1/default.conf | 23 +++++++++++++++ z1/docker-compose.yml | 31 +++++++++++++++++++ z1/index.html | 2 ++ z1/nginx.conf | 23 +++++++++++++++ z1/prepare-app.sh | 8 +++++ z1/remove-app.sh | 6 ++++ z1/start-app.sh | 7 +++++ z1/stop-app.sh | 4 +++ 11 files changed, 186 insertions(+) create mode 100644 z1/Dockerfile create mode 100644 z1/README.md create mode 100644 z1/Yan .zip create mode 100644 z1/default.conf create mode 100644 z1/docker-compose.yml create mode 100644 z1/index.html create mode 100644 z1/nginx.conf create mode 100644 z1/prepare-app.sh create mode 100644 z1/remove-app.sh create mode 100644 z1/start-app.sh create mode 100644 z1/stop-app.sh diff --git a/z1/Dockerfile b/z1/Dockerfile new file mode 100644 index 0000000..538f77c --- /dev/null +++ b/z1/Dockerfile @@ -0,0 +1,15 @@ +# Используем официальный образ Nginx +FROM nginx:latest + +# Копируем конфиг файлы в контейнер +COPY nginx/nginx.conf /etc/nginx/nginx.conf +COPY nginx/default.conf /etc/nginx/conf.d/default.conf + +# Копируем содержимое вашего веб-приложения в контейнер +COPY ./app /usr/share/nginx/html + +# Открываем порт 80 для веб-сервера +EXPOSE 80 + +# Запускаем Nginx +CMD ["nginx", "-g", "daemon off;"] diff --git a/z1/README.md b/z1/README.md new file mode 100644 index 0000000..55750c9 --- /dev/null +++ b/z1/README.md @@ -0,0 +1,67 @@ +# Docker Web Application with MySQL and Nginx + +## Requirements +- Docker +- Docker Compose + +## Description +This web application consists of two services: +1. A **web service** using Nginx to serve static HTML files. +2. A **database service** using MySQL, which persists its data in a Docker volume. + +## Docker Volumes and Networks +- **Volume**: `db_data` - used to persist MySQL data. +- **Network**: `app-network` - internal network for the services to communicate. + +## Configuration +- **Nginx**: Serves static HTML files from the `/html` directory. +- **MySQL**: Configured with `MYSQL_ROOT_PASSWORD` and a default database `mydb`. + +## How to Use + +### Preparing the app +Run the following command to prepare the application: +```bash +./prepare-app.sh +``` + +### Starting the app +To start the app, run: +```bash +./start-app.sh +``` + +The app will be available at `http://localhost:5000`. + +### Stopping the app +To stop the app, run: +```bash +./stop-app.sh +``` + +### Removing the app +To remove all resources related to the app, run: +```bash +./remove-app.sh +``` + +## Example usage + +```bash +# Prepare the app +./prepare-app.sh +Preparing app... + +# Start the app +./start-app.sh +Running app ... +The app is available at http://localhost:5000 + +# Stop the app +./stop-app.sh +Stopping app... + +# Remove the app +./remove-app.sh +Removed app. +``` diff --git a/z1/Yan .zip b/z1/Yan .zip new file mode 100644 index 0000000000000000000000000000000000000000..e95dfb8ef9005d76d50ccdacdafe327d3b1a6389 GIT binary patch literal 4032 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 literal 0 HcmV?d00001 diff --git a/z1/default.conf b/z1/default.conf new file mode 100644 index 0000000..7a219e9 --- /dev/null +++ b/z1/default.conf @@ -0,0 +1,23 @@ +# default.conf +server { + listen 80; + + server_name localhost; + + # Путь до вашего веб-приложения + location / { + root /usr/share/nginx/html; + index index.html index.htm; + } + + # Для обработки ошибок + error_page 404 /404.html; + location = /404.html { + root /usr/share/nginx/html; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root /usr/share/nginx/html; + } +} diff --git a/z1/docker-compose.yml b/z1/docker-compose.yml new file mode 100644 index 0000000..de2550b --- /dev/null +++ b/z1/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.7" +services: + web: + build: + context: . + ports: + - "80:80" + volumes: + - ./app:/usr/share/nginx/html + - ./nginx/nginx.conf:/etc/nginx/nginx.conf + - ./nginx/default.conf:/etc/nginx/conf.d/default.conf + networks: + - app-network + restart: always + db: + image: mysql:5.7 + environment: + MYSQL_ROOT_PASSWORD: example + volumes: + - db_data:/var/lib/mysql + networks: + - app-network + restart: always + +volumes: + db_data: + +networks: + app-network: + driver: bridge + \ No newline at end of file diff --git a/z1/index.html b/z1/index.html new file mode 100644 index 0000000..f1517b1 --- /dev/null +++ b/z1/index.html @@ -0,0 +1,2 @@ +mkdir app +echo "

Hello World! My name is Yan Kasabutski

" > app/index.html diff --git a/z1/nginx.conf b/z1/nginx.conf new file mode 100644 index 0000000..c4f9ae5 --- /dev/null +++ b/z1/nginx.conf @@ -0,0 +1,23 @@ +# nginx.conf +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + + # Логирование + access_log /var/log/nginx/access.log; + error_log /var/log/nginx/error.log; + + sendfile on; + tcp_nopush on; + tcp_nodelay on; + keepalive_timeout 65; + types_hash_max_size 2048; + + include /etc/nginx/conf.d/*.conf; +} diff --git a/z1/prepare-app.sh b/z1/prepare-app.sh new file mode 100644 index 0000000..dbd720d --- /dev/null +++ b/z1/prepare-app.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Включаем создание контейнеров +docker-compose build + +# Создание сети и томов +docker network create app-network +docker volume create db_data diff --git a/z1/remove-app.sh b/z1/remove-app.sh new file mode 100644 index 0000000..b801879 --- /dev/null +++ b/z1/remove-app.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +# Удаляем все контейнеры, тома и сети +docker-compose down --volumes --remove-orphans +docker network rm app-network +docker volume rm db_data diff --git a/z1/start-app.sh b/z1/start-app.sh new file mode 100644 index 0000000..d83b980 --- /dev/null +++ b/z1/start-app.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# Запуск контейнеров в фоновом режиме +docker-compose up -d + +# Выводим на каком порте доступно приложение +echo "The app is available at http://localhost:5000" diff --git a/z1/stop-app.sh b/z1/stop-app.sh new file mode 100644 index 0000000..dec9054 --- /dev/null +++ b/z1/stop-app.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +# Останавливаем все контейнеры +docker-compose down