Я пытаюсь докеризировать свое приложение. Он состоит из основного компонента. NET и внешнего интерфейса Angular, настроенного следующим образом:
root папка
- docker -композит
Dockerfile
- веб-подпапка (содержит Angular внешний интерфейс)
- API-подпапка (содержит. NET Core backend)
Я могу успешно создать контейнер используя docker -compose и Dockerfile. Я не могу понять, как на самом деле запустить приложение в Docker. Обычно, когда я хочу запустить приложение локально на моем компьютере, я выполняю команду do tnet run из папки api с помощью Powershell, а затем в другом окне Powershell запускаю команду ng serve из веб-папки. Как мне запустить две команды оболочки из двух разных папок в docker -compose или Dockerfile?
Я попытался добавить две команды в конец Dockerfile следующим образом:
RUN cd api && dotnet run api.csproj
RUN cd web && ng serve
Docker запускает первую строку, но никогда не попадает на следующую строку. Я предполагаю, что мне нужно выдавать команды из docker -композиции, но я не знаю, как go об этом.
ОБНОВЛЕНИЕ: В ответ на разбиение приложения на два разных контейнера, две части зависят друг от друга. Бэкэнд имеет символическую ссылку на внешний интерфейс. Когда серверный модуль инициализируется, он проверяет, установлен ли узел, и существует ли папка node_modules из внешнего интерфейса, если нет, то возникает ошибка. В контейнере docker мне нужно сначала создать внешний интерфейс и установить узел, а затем создать внутренний. Я также решил уменьшить размер файла, поэтому имеет смысл хранить все в одном контейнере.