Запуск двух контейнеров Docker в одном плане службы приложений Azure.

У меня есть два контейнера, которые должны работать на одной машине. Первый контейнер — это сервер, а второй — агент. Имя тега изображения сервера: local-wptserver Имя тега изображения сервера: local-wptagent

Я могу заставить его работать локально, поэтому я пытаюсь развернуть его в облаке (Azure) для использования командой.

Вот как я запускаю его локально:

docker run -d -p 4000:80 local-wptserver

docker run -d -p 4001:80 --network="host" -e "SERVER_URL=http://localhost:4000/work/" -e "LOCATION=EastUS_wptdriver" local-wptagent

Это в основном настраивает сервер и агент для общения друг с другом, поэтому, как только я начинаю делать вызовы API на сервер, он планирует задание с агентом и возвращает мне результаты.

Однако, поскольку мои образы теперь находятся в реестре контейнеров Azure, как мне получить контейнер для создания экземпляра с этими дополнительными параметрами (--network="host" -e "SERVER_URL=http://localhost:4000/work/" -e "LOCATION=EastUS_wptdriver") при развертывании в веб-приложении? Могу ли я добавить это в файл докера перед созданием образа? Если да, то как?

Примечание. Я использую один и тот же план службы приложений Azure, чтобы убедиться, что два веб-приложения (построенные из двух разных репозиториев в реестре контейнеров Azure: сервер и агент) находятся на одном компьютере.


person Srayan Guhathakurta    schedule 13.12.2019    source источник
comment
Что вы думаете, когда вы не даете никаких обновлений и также не принимаете ответ? Вы все еще хотите решить проблему?   -  person Charles Xu    schedule 30.12.2019


Ответы (1)


Если вы хотите развернуть несколько контейнеров в веб-приложении Azure, вам нужно использовать файл docker-compose для развертывания нескольких контейнеров. Вы можете выполнить действия, описанные в примере .

Кроме того, --network не поддерживает компоновку докеров в Azure Web App, вы можете увидеть все поддерживаемые параметры компоновки здесь. Но не волнуйтесь, контейнеры могут общаться друг с другом через порты.

Согласно сообщению о том, что вы отправляете образы в Реестр контейнеров Azure. Затем вы должны использовать ACR в качестве реестра докеров. Поэтому вам нужно установить переменные среды для вашего ACR и подробности здесь. И есть также много деталей, которые вы знаете по ссылке, которую я предоставил.

person Charles Xu    schedule 16.12.2019
comment
Спасибо за подсказки, Чарльз. Вот как выглядит мой docker-compose.yml:: версия: '3' services: webpagetestserver: image: local-wptserver порты: - 4000:80 webpagetestagent: image: local-wptagent порты: - 4001:80 я не указал network=host, поскольку это не поддерживается, и я боюсь, что мои агенты не подключаются к серверу. Любые обходные пути? - person Srayan Guhathakurta; 17.12.2019
comment
@SrayanGuhathakurta Вам нужно более внимательно прочитать параметры создания докера поддержки. Порт не поддерживает порты, кроме 80 и 8080. Вам нужно только установить порт как ports: - "80". И вы можете использовать переменные среды, как показано в руководстве по ссылке примера. - person Charles Xu; 17.12.2019
comment
@SrayanGuhathakurta А как насчет вопроса? Вы решаете это? - person Charles Xu; 17.12.2019
comment
Привет Чарльз, Спасибо за отзыв. Я пробовал менять порты: - 4000:80 и порты: - 4001:80 на просто порты: - 80, но это не сработало. Также я установил переменные env и загрузил изображения в ACR и создал файл docker-compose.yml, который отлично работает для меня на моей локальной машине, но не в веб-приложении. Что касается параметра --network, я обнаружил, что вы можете использовать network_mode: host в файле docker-compose.yml. - person Srayan Guhathakurta; 19.12.2019
comment
@SrayanGuhathakurta Вы действительно читали информацию, которую я предоставил в ответе?! Параметр network не поддерживался в файле docker-compose для веб-приложения. - person Charles Xu; 23.12.2019
comment
Вместо того, чтобы идти вперед, почему бы вам не рассказать мне, как бы вы написали Dockerfile? Думаю, это было бы намного полезнее. - person Srayan Guhathakurta; 23.12.2019
comment
@SrayanGuhathakurta У меня нет всей информации о том, что вам нужно сделать, вам нужно создать файл docker-compose самостоятельно. Что я могу сделать, так это понять и исправить ошибку, которую вы сделали. - person Charles Xu; 24.12.2019