Подготовка простого проекта Docker Compose
На этом шаге мы подготовим простой проект Docker Compose. Docker Compose — это инструмент для определения и запуска многоконтейнерных Docker-приложений. С помощью Compose вы используете YAML-файл для настройки сервисов вашего приложения. Затем одной командой создаёте и запускаете все сервисы из конфигурации.
Поскольку Docker Compose не предустановлен в среде LabEx, сначала нам нужно его установить. Мы скачаем бинарный файл Docker Compose и сделаем его исполняемым.
Сначала загрузим бинарный файл Docker Compose. Используем curl
для скачивания последней стабильной версии.
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
Эта команда загружает бинарный файл Docker Compose для вашей архитектуры системы и сохраняет его в /usr/local/bin/docker-compose
.
Далее нужно сделать скачанный бинарный файл исполняемым.
sudo chmod +x /usr/local/bin/docker-compose
Эта команда добавляет права на выполнение для бинарного файла Docker Compose.
Теперь проверим установку, посмотрев версию Docker Compose.
docker-compose --version
В выводе вы должны увидеть установленную версию Docker Compose, что подтвердит успешность установки.
Теперь, когда Docker Compose установлен, создадим простой проект. Создадим директорию для проекта и файл docker-compose.yml
внутри неё.
Сначала создадим директорию my-compose-app
в домашней директории.
mkdir ~/project/my-compose-app
Перейдём в созданную директорию.
cd ~/project/my-compose-app
Теперь создадим файл docker-compose.yml
. Этот файл будет определять сервисы нашего приложения. Используем nano
для создания и редактирования файла.
nano docker-compose.yml
В редакторе nano
вставим следующее содержимое:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: ubuntu:latest
command: tail -f /dev/null
Разберём этот файл docker-compose.yml
:
version: '3.8'
— указывает версию формата файла Docker Compose.
services:
— определяет сервисы, из которых состоит ваше приложение.
web:
— определяет сервис с именем web
.
image: nginx:latest
— указывает, что этот сервис будет использовать Docker-образ nginx:latest
. Если образ отсутствует локально, Docker Compose загрузит его из Docker Hub.
ports:
— пробрасывает порт 80 на хосте в порт 80 контейнера web
.
app:
— определяет сервис с именем app
.
image: ubuntu:latest
— указывает, что этот сервис будет использовать Docker-образ ubuntu:latest
.
command: tail -f /dev/null
— указывает команду, которая выполняется при старте контейнера app
. Эта команда поддерживает работу контейнера бесконечно без завершения.
Сохраним файл, нажав Ctrl + X
, затем Y
, и затем Enter
.
Прежде чем запускать сервисы, убедимся, что необходимые Docker-образы доступны. Хотя Docker Compose загрузит образы, если они отсутствуют, рекомендуется заранее их скачать, особенно в средах с ограниченным доступом в интернет или для более быстрого старта.
Скачаем образ nginx:latest
.
docker pull nginx:latest
Эта команда загружает образ nginx:latest
из Docker Hub.
Затем скачаем образ ubuntu:latest
.
docker pull ubuntu:latest
Эта команда загружает образ ubuntu:latest
из Docker Hub.
Теперь вы успешно подготовили простой проект Docker Compose с двумя сервисами, web
и app
, и загрузили необходимые Docker-образы.