Создание простого проекта Docker Compose
Теперь, когда Docker Compose правильно установлен и работает, давайте создадим простой проект, чтобы протестировать нашу настройку. Мы создадим базовое веб-приложение с веб-сервером и базой данных Redis.
Создание каталога проекта
Сначала давайте создадим отдельный каталог для нашего проекта:
mkdir ~/project/docker-compose-test
cd ~/project/docker-compose-test
Создание файла Docker Compose
Теперь давайте создадим файл docker-compose.yml с помощью текстового редактора nano:
nano docker-compose.yml
Скопируйте и вставьте следующее содержимое в файл:
version: "3"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
redis:
image: redis:alpine
Этот файл Docker Compose определяет две службы:
web: Веб-сервер Nginx, который будет обслуживать контент из локального каталога
redis: База данных Redis для кэширования или хранения данных сеанса
Нажмите Ctrl+O, затем Enter, чтобы сохранить файл, затем нажмите Ctrl+X, чтобы выйти из nano.
Создание HTML-контента
Давайте создадим простую HTML-страницу, которую будет обслуживать наш веб-сервис:
mkdir -p html
nano html/index.html
Скопируйте и вставьте следующее содержимое в файл:
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
<p>If you can see this, your Docker Compose setup is working correctly.</p>
</body>
</html>
Нажмите Ctrl+O, затем Enter, чтобы сохранить файл, затем нажмите Ctrl+X, чтобы выйти из nano.
Запуск проекта Docker Compose
Теперь давайте запустим наш проект Docker Compose:
docker-compose up -d
Флаг -d запускает контейнеры в фоновом режиме (detached mode). Вы должны увидеть вывод, похожий на:
Creating network "docker-compose-test_default" with the default driver
Pulling web (nginx:alpine)...
Pulling redis (redis:alpine)...
[...]
Creating docker-compose-test_web_1 ... done
Creating docker-compose-test_redis_1 ... done
Проверка работы служб
Давайте проверим, что наши службы работают правильно:
docker-compose ps
Вы должны увидеть вывод, похожий на:
Name Command State Ports
------------------------------------------------------------------------------------
docker-compose-test_redis_1 docker-entrypoint.sh redis ... Up 6379/tcp
docker-compose-test_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8080->80/tcp
Доступ к веб-приложению
Теперь вы можете получить доступ к веб-приложению, открыв веб-браузер в интерфейсе LabEx и перейдя по адресу http://localhost:8080. Вы должны увидеть сообщение "Hello from Docker Compose!".
Альтернативно, вы можете использовать curl, чтобы проверить веб-сервер из командной строки:
curl http://localhost:8080
Вы должны увидеть HTML-контент, который мы создали ранее.
Остановка проекта Docker Compose
Когда вы закончите тестирование, вы можете остановить проект Docker Compose:
docker-compose down
Вы должны увидеть вывод, похожий на:
Stopping docker-compose-test_web_1 ... done
Stopping docker-compose-test_redis_1 ... done
Removing docker-compose-test_web_1 ... done
Removing docker-compose-test_redis_1 ... done
Removing network docker-compose-test_default
Поздравляем! Вы успешно установили Docker Compose, решили ошибку "command not found" и протестировали свою настройку с помощью простого многоконтейнерного приложения.