【发布时间】:2020-02-16 20:26:11
【问题描述】:
我正在尝试 dockerize 我的应用程序。它由一个 .NET Core 后端和一个 Angular 前端组成,设置如下:
-
根目录
- 码头工人撰写
-
Dockerfile
- web 子文件夹(包含 Angular 前端)
- api 子文件夹(包含 .NET Core 后端)
我可以使用 docker-compose 和 Dockerfile 成功创建容器。我不知道如何在 Docker 中实际运行应用程序。通常,当我想在我的计算机上本地运行应用程序时,我使用 Powershell 从 api 文件夹执行“dotnet run”命令,然后在另一个 Powershell 窗口中从 web 文件夹运行“ng serve”命令。如何从 docker-compose 或 Dockerfile 中的两个不同文件夹运行两个 shell 命令?
我尝试在 Dockerfile 末尾添加两个命令,如下所示:
RUN cd api && dotnet run api.csproj
RUN cd web && ng serve
Docker 运行第一行但永远不会到达下一行。我猜我必须从 docker-compose 发出命令,但我不知道该怎么做。
更新: 为了响应将应用程序拆分为两个不同的容器,这两个部分相互依赖。后端有一个指向前端的符号链接。初始化后端时,它会检查是否安装了 node 以及是否存在来自前端的 node_modules 文件夹,如果不存在则发生错误。在 docker 容器中,我需要先创建前端并安装节点,然后再创建后端。我还想减小文件大小,将所有内容保存在一个容器中是有意义的。
【问题讨论】:
-
在我看来,您实际上有两个不同的应用程序。在这种情况下,我通常会尝试为每个应用程序创建一个 Dockerfile。您是否有特定的原因要让这两个应用程序从单个 Docker 容器中运行?
-
应用程序设置在后端具有指向前端的符号链接的位置。我需要先创建前端然后再创建后端,否则应用程序在初始化时会抛出错误。
标签: docker docker-compose