Проблема с использованием docker compose файла, созданного VS 2019 на Mac - PullRequest
0 голосов
/ 01 мая 2020

У меня какая-то проблема с запуском многоконтейнерного приложения на Ma c. У меня есть 3 контейнера, работающих вместе: 2 просто web api (. NET Core) и официальный контейнер RabbitMQ, 2 события обмена API, используя сервис RabbitMq. Приложение работает корректно, выполняя docker compose project from Visual Studio debug, когда Api1 получает POST, он создает некоторые данные в БД и отправляет сообщение в Api2 с помощью rabbit; Api2 получает сообщение, отправленное Api1, оба api видны на localhost ... пока все хорошо.

Когда я пытаюсь переместить приложение из отладки Visual Studio в Docker У меня возникают некоторые проблемы, моя идея должен был использовать файл docker compose, сгенерированный VS на CLI docker (docker -compose up), следуя последовательности действий, которые я сделал:

1) Выполнение docker -составить из Docker CLI, сборка контейнеров, присутствующих в docker -создать, не удалось (я ожидал, что VS просто выполнит ту же docker -создание во время отладка, поэтому я ожидал таких же результатов, но, вероятно, я ошибся). Решение : Я удалил сборку и использую образы, созданные VS во время предыдущего теста отладки (все еще доступны в docker локальном репозитории образов), это позволяет обойти проблему сборки (мне все равно нужно выяснить причины , но давайте перейдем к следующей точке)

2) После шага 1 я могу выполнить docker -составить без ошибок, но 2 контейнера с 2 apis немедленно завершают работу с кодом 0 Контейнер RabbitMQ не имеет проблем и продолжает работать, как и ожидалось. Решение : Я добавил stdin_open: true и tty: true in docker - создать решение этой странной проблемы

3) После шага 2 я выполнил docker -составить и смог увидеть, что все контейнеры работают правильно, но 2 контейнера API больше недоступны на локальном хосте (связанный порт открыт и опубликован) поэтому я не могу больше отправлять запросы POST к API

Я не большой эксперт по Docker, но запуск этого простого мультиконтейнерного приложения занял у меня намного больше времени, чем ожидалось, и все же у меня есть сомнения и вопросы, любые предложения приветствуются.

Спасибо

1 Ответ

0 голосов
/ 06 мая 2020

Я нашел и исправил все проблемы, о которых я сообщаю здесь, потому что я полагаю, что это должно быть полезно для других людей:

1) Эта проблема связана с ошибкой в ​​VS 2019, проблема возникла при включении В решении некоторых проектов (в моем случае библиотеки классов), которые не находятся в той же папке решения, это приведет к неправильному пути назначения для команды COPY в файле docker, по этой причине сборка не удалась. Я сообщил о проблеме в Microsoft: Неправильная команда копирования в Dockerfile Тем временем, ожидая исправления, вы можете поместить весь проект, используемый в решении, в одну папку решения, это позволит избежать неправильного пути, созданного в dockerfile, и, следовательно, сбой процедуры сборки.

2) Эта проблема присутствует только в изображениях, созданных docker -compose в отладке (обычно их можно распознать по тегу "dev"), эти изображения полезны для отладка, но не используйте их вне VS отладки. После фиксированной точки 1 создание изображений с использованием docker -compose было выполнено правильно, и изображения работают должным образом (без добавления stdin_open: true и tty: true в docker - составьте).

3) Также решена эта проблема с использованием изображений, созданных в точке 1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...