visual-studio - 如何在同一解决方案中容器化具有依赖关系的 .net 核心应用程序?
问题描述
我正在尝试将一个依赖于 .net 标准库的简单 .net 核心控制台应用程序容器化。
我的解决方案布局是这样的:
+
|- Solution.sln
|- Library
| +- Files in Library project
+- App
|- Files in App
+- Dockerfile
App
取决于Library
。
到目前为止,我有这样的事情:
FROM microsoft/dotnet:2.1-sdk
WORKDIR /app
# copy fsproj and restore as distinct layers
COPY *.fsproj ./
RUN dotnet restore
# copy and build everything else
COPY . ./
RUN dotnet publish -c Release -o out
但这显然只是将App
.
除了解决方案文件之外,我如何也Library
无需将 Dockerfile 放入根目录中,也可以实现放入?
解决方案
您可以将 docker build 上下文更改为父目录。
将您的 dockerfile 更改为:
FROM microsoft/dotnet:2.1-sdk
WORKDIR /app
# copy fsproj and restore as distinct layers
COPY App/*.fsproj ./
RUN dotnet restore
# copy and build everything else
COPY App/. ./
RUN dotnet publish -c Release -o out
然后运行(从包含添加和库的文件夹)
docker build -f App/Dockerfile .
但是,是的,将 dockerfile 放在您希望构建上下文所在的位置通常更常见。因此,在包含您需要的所有文件的位置。
在 Mac/Windows 的 docker 上,docker 守护进程会将构建上下文中的每个文件复制到 VM 中。所以这里有一个性能问题。构建项目时需要考虑的事项。
推荐阅读
- apache-spark - Trino create table with special characters in nested columns
- css - 声明全局 CSS 变量会在 Dreamweaver 中生成错误
- python - 终端输入阻止了python中的多处理
- r - 如何在 R 中为特定 id 添加随机观察
- yolov5 - 经过训练的 yolov5s.pt 的大小比预期的要大得多
- android - 字体系列时Android Chrome缺少波兰语符号:衬线
- c# - 如何正确使用鼠标在一个轴上旋转 2D 对象
- python - COM 对象在其他线程上编组后与服务器断开连接
- database - 在线“上传”程序
- sapui5 - 加载 UI5 片段