【发布时间】:2018-12-24 15:28:24
【问题描述】:
我目前正在开发NET Application,我必须运行以下 bash 脚本:
1.
Build项目2.
dotnet publish -c Release项目3.
copypublish文件夹指向Dockerfile的路径。
这可以直接从dockerfile 完成吗?
我现在正在运行:
Bash 脚本
dotnet build ../${serverSrcFolder} &&
dotnet publish -c Release ../${serverSrcFolder} --output $(pwd)/${serverPublishDestFolder}
Dockerfile
FROM microsoft/dotnet:2.1-aspnetcore-runtime
WORKDIR /app
COPY . /app
ENTRYPOINT [ "dotnet" , "./publish/Server.dll" ]
EXPOSE 9400
EXPOSE 6379
publish 文件夹位于dockerfile 附近。
- 父文件夹
- Dockerfile
- 发布
上面bash 脚本中的serverPublishDestFolder 就是这个publish 文件夹。
每当dockerfile 中的publish 文件夹发生更改时,我能否始终映射它?
【问题讨论】:
-
您是否要更新 docker 映像中的发布文件夹,以便它引用最新的 .dll 和其他工件? Dockerfile 是传递给您的 docker 守护进程以构建您的 docker 镜像的材料清单,因此它是不可变的。因此,如果代码发生更改并且完成了 dotnet 发布,则必须重建映像。另一个选项(不推荐用于生产)是将主机中的目录挂载到上图中正在运行的容器中。即 docker run -v "$(pwd)/publish":/app/publish
不确定 .net core 的热重新部署是如何工作的。 -
我想按照你正确的说法执行第一个选项。我希望每次运行
dockerfile,首先构建和发布dll,然后使用该路径将其注入新形成的图像中。
标签: docker build .net-core publish