Развертывание веб-сервера с Docker
Создание Dockerfile
Для развертывания веб-сервера с помощью Docker необходимо сначала создать Dockerfile. Dockerfile — это текстовый файл, содержащий инструкции для создания Docker-изображения. Вот пример Dockerfile для простого веб-сервера Nginx:
## Используйте официальный образ Nginx в качестве базового
FROM nginx:latest
## Скопируйте файл конфигурации Nginx по умолчанию
COPY default.conf /etc/nginx/conf.d/default.conf
## Скопируйте код веб-приложения в контейнер
COPY app/ /usr/share/nginx/html/
## Откройте порт 80 для HTTP-трафика
EXPOSE 80
## Запустите сервер Nginx
CMD ["nginx", "-g", "daemon off;"]
Этот Dockerfile:
- Использует официальный образ Nginx в качестве базового.
- Копирует файл конфигурации Nginx по умолчанию в контейнер.
- Копирует код веб-приложения в корневую директорию веб-приложения контейнера.
- Открывает порт 80 для HTTP-трафика.
- Запускает сервер Nginx.
Сборка и запуск Docker-изображения
После создания Dockerfile вы можете собрать Docker-образ с помощью команды docker build:
## Сборка Docker-изображения
docker build -t my-nginx-server .
Эта команда собирает Docker-образ с меткой my-nginx-server используя Dockerfile в текущей директории.
После сборки образа вы можете запустить контейнер на основе этого образа с помощью команды docker run:
## Запуск Docker-контейнера
docker run -d -p 80:80 --name my-nginx-server my-nginx-server
Эта команда:
- Запускает контейнер в откреплённом режиме (
-d).
- Картирует порт 80 на хосте на порт 80 в контейнере (
-p 80:80).
- Присваивает контейнеру имя
my-nginx-server.
- Использует образ
my-nginx-server для создания контейнера.
Масштабирование и балансировка нагрузки
Для масштабирования веб-сервера вы можете запустить несколько экземпляров Docker-контейнера и использовать балансировщик нагрузки для распределения трафика между экземплярами. Вот пример того, как это можно сделать с помощью Docker Compose:
version: "3"
services:
web:
build: .
ports:
- 80:80
deploy:
replicas: 3
load-balancer:
image: nginx:latest
ports:
- 8080:80
depends_on:
- web
configs:
- source: nginx-config
target: /etc/nginx/conf.d/default.conf
configs:
nginx-config:
file: ./nginx.conf
Этот файл Docker Compose:
- Сборка сервиса
web используя Dockerfile в текущей директории.
- Развертывает три реплики сервиса
web.
- Запускает сервис балансировщика нагрузки Nginx, который прослушивает порт 8080 и перенаправляет трафик на экземпляры сервиса
web.
- Монтирует пользовательский файл конфигурации Nginx в контейнер балансировщика нагрузки.
Используя Docker Compose и балансировку нагрузки, вы можете легко масштабировать свой веб-сервер и обеспечить высокую доступность и отказоустойчивость.