Подготовка простого многокомпонентного приложения
На этом шаге мы подготовим простое многокомпонентное приложение, которое будем использовать в ходе лабораторной работы для практики перезапуска Docker-сервисов. Приложение состоит из двух сервисов: веб-сервиса и сервиса базы данных. Мы определим эти сервисы с помощью файла Docker Compose.
Сначала необходимо установить Docker Compose. Поскольку он не предустановлен в среде LabEx VM, мы скачаем и установим его.
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
Первая команда скачивает бинарный файл Docker Compose с официального репозитория GitHub и сохраняет его в /usr/local/bin/docker-compose
. Части $(uname -s)
и $(uname -m)
автоматически определяют вашу операционную систему и архитектуру для загрузки правильной версии. Вторая команда делает скачанный файл исполняемым.
Теперь проверим установку, посмотрев версию Docker Compose.
docker-compose --version
Вы должны увидеть вывод, похожий на Docker Compose version v2.20.2
.
Далее перейдём в директорию ~/project
, которая является рабочей для этой лабораторной работы.
cd ~/project
Теперь создадим файл docker-compose.yml
для определения нашего многокомпонентного приложения. Этот файл будет содержать описание сервисов, их образов и необходимых конфигураций.
nano docker-compose.yml
Вставьте следующее содержимое в файл docker-compose.yml
:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
В этом файле docker-compose.yml
:
version: '3.8'
указывает версию формата файла Docker Compose
services:
определяет различные сервисы в нашем приложении
- Сервис
web
использует образ nginx:latest
, пробрасывает порт 80 хоста на порт 80 контейнера и зависит от сервиса db
. Это означает, что сервис db
будет запущен перед сервисом web
- Сервис
db
использует образ postgres:latest
и устанавливает переменную окружения POSTGRES_PASSWORD
, которая требуется для образа PostgreSQL
Сохраните файл и выйдите из редактора nano (нажмите Ctrl + X
, затем Y
, затем Enter
).
Перед запуском сервисов необходимо загрузить соответствующие образы Docker.
docker pull nginx:latest
docker pull postgres:latest
Эти команды скачивают образы nginx:latest
и postgres:latest
из Docker Hub.
Наконец, запустим сервисы, определённые в нашем файле docker-compose.yml
.
docker-compose up -d
Команда docker-compose up -d
собирает, создаёт и запускает сервисы в фоновом режиме (detached mode).
Статус запущенных сервисов можно проверить с помощью следующей команды:
docker-compose ps
Вы должны увидеть вывод, указывающий, что оба сервиса web
и db
работают.