Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом руководстве описано, как подготовить многоконтейнерное приложение для использования в Kubernetes. Вы используете существующие средства разработки, такие как Docker Compose, для локальной сборки и тестирования приложения. Вы узнаете, как:
- Клонирование примера источника приложения из GitHub.
- Создайте образ контейнера из примера источника приложения.
- Протестируйте многоконтейнерное приложение в локальной среде Docker.
После завершения следующее приложение запускается в локальной среде разработки:
В последующих руководствах вы отправляете образ контейнера в реестр контейнеров Azure (ACR), а затем развертываете его в кластере AKS.
Перед тем как начать
В этом руководстве предполагается базовое понимание основных понятий Docker, таких как контейнеры, образы контейнеров и docker команды. Основные сведения о контейнерах см. в статье "Начало работы с Docker".
Для работы с этим руководством вам потребуется локальная среда разработки Docker под управлением контейнеров Linux. Docker предоставляет пакеты, которые настраивают Docker в системе Mac, Windows или Linux .
Note
Azure Cloud Shell не включает компоненты Docker, необходимые для выполнения каждого шага в этих руководствах. Поэтому рекомендуется использовать полную среду разработки Docker.
Получение кода приложения
Пример приложения, используемого в этом руководстве, — это базовое клиентское приложение магазина, включая следующие развертывания и службы Kubernetes:
- Интерфейс магазина: веб-приложение для пользователей для просмотра продуктов и размещения заказов.
- Сервис продукта: отображает информацию о продукте.
- Служба заказов: помещает заказы.
- Rabbit MQ: очередь сообщений для управления очередью заказов.
Используйте git , чтобы клонировать пример приложения в среду разработки.
git clone https://github.com/Azure-Samples/aks-store-demo.gitПерейдите в клонированные каталоги.
cd aks-store-demo
Просмотр файла Docker Compose
В примере приложения, создаваемого в этом руководстве, используется файл YAML docker-compose-quickstart из клонированного репозитория.
services:
rabbitmq:
image: rabbitmq:3.13.2-management-alpine
container_name: 'rabbitmq'
restart: always
environment:
- "RABBITMQ_DEFAULT_USER=username"
- "RABBITMQ_DEFAULT_PASS=password"
ports:
- 15672:15672
- 5672:5672
healthcheck:
test: ["CMD", "rabbitmqctl", "status"]
interval: 30s
timeout: 10s
retries: 5
volumes:
- ./rabbitmq_enabled_plugins:/etc/rabbitmq/enabled_plugins
networks:
- backend_services
order-service:
build: src/order-service
container_name: 'order-service'
restart: always
ports:
- 3000:3000
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://order-service:3000/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- ORDER_QUEUE_HOSTNAME=rabbitmq
- ORDER_QUEUE_PORT=5672
- ORDER_QUEUE_USERNAME=username
- ORDER_QUEUE_PASSWORD=password
- ORDER_QUEUE_NAME=orders
- ORDER_QUEUE_RECONNECT_LIMIT=3
networks:
- backend_services
depends_on:
rabbitmq:
condition: service_healthy
product-service:
build: src/product-service
container_name: 'product-service'
restart: always
ports:
- 3002:3002
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://product-service:3002/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- AI_SERVICE_URL=http://ai-service:5001/
networks:
- backend_services
store-front:
build: src/store-front
container_name: 'store-front'
restart: always
ports:
- 8080:8080
healthcheck:
test: ["CMD", "wget", "-O", "/dev/null", "-q", "http://store-front:80/health"]
interval: 30s
timeout: 10s
retries: 5
environment:
- VUE_APP_PRODUCT_SERVICE_URL=http://product-service:3002/
- VUE_APP_ORDER_SERVICE_URL=http://order-service:3000/
networks:
- backend_services
depends_on:
- product-service
- order-service
networks:
backend_services:
driver: bridge
Создание образов контейнеров и запуск приложения
С помощью Docker Compose можно автоматизировать создание образов контейнеров и развертывание многоконтейнерных приложений.
Docker
Создайте образ контейнера, скачайте образ RabbitMQ и запустите приложение с помощью
docker composeкоманды:docker compose -f docker-compose-quickstart.yml up -dПросмотр созданных образов с помощью
docker imagesкоманды.docker imagesВ следующем сжатом примере выходных данных показаны созданные образы:
REPOSITORY TAG IMAGE ID aks-store-demo-product-service latest 72f5cd7e6b84 aks-store-demo-order-service latest 54ad5de546f9 aks-store-demo-store-front latest 1125f85632ae ...Просмотрите запущенные контейнеры с помощью
docker psкоманды.docker psВ следующем сжатом примере выходных данных показаны четыре запущенных контейнера:
CONTAINER ID IMAGE f27fe74cfd0a aks-store-demo-product-service df1eaa137885 aks-store-demo-order-service b3ce9e496e96 aks-store-demo-store-front 31df28627ffa rabbitmq:3.13.2-management-alpine
Локальное тестирование приложения
Чтобы увидеть запущенное приложение, перейдите http://localhost:8080 в локальный веб-браузер. Пример загрузки приложения, как показано в следующем примере:
На этой странице можно просмотреть продукты, добавить их в корзину, а затем разместить заказ.
Очистите ресурсы
Так как вы проверили функциональные возможности приложения, можно остановить и удалить запущенные контейнеры. Не удаляйте образы контейнеров - вы используете их в следующем руководстве.
Остановите и удалите экземпляры контейнеров и ресурсы с помощью
docker-compose downкоманды.docker compose down
Дальнейшие шаги
В этом руководстве вы создали пример приложения, создали образы контейнеров для приложения, а затем протестировали приложение. Вы узнали, как:
- Клонирование примера источника приложения из GitHub.
- Создайте образ контейнера из примера источника приложения.
- Протестируйте многоконтейнерное приложение в локальной среде Docker.
В следующем руководстве описано, как хранить образы контейнеров в ACR.
Azure Kubernetes Service