【发布时间】:2020-01-22 14:58:53
【问题描述】:
总结
有一个docker-compose.yml 文件可以构建这样的图像:
services:
my-service:
build:
context: My.VS.AppFolder
networks:
- my-docker
networks:
my-docker:
external: true
定义的网络仅在ENTRYPOINT 中可用。但不是在构建期间。在构建Dockerfile 期间,如何访问同一网络my-docker 上的另一个容器?
用例:从私有仓库获取 NuGet 包
用例说明
我有一个 ASP.NET Core MVC 2.1 Web 应用程序。为了更好地分离关注点,我想在另一个分离的 Web 应用程序(例如管理界面)中实现某些功能。为了避免复制应用程序布局 (Razor) 或一些辅助实用程序类等共享内容,我为这些内容创建了一个共享项目。
所以现在有三个项目:
- MyApp (原始应用程序)
- MyApp.Core (用于共享的东西)
- MyApp.Admin
由于 MyApp.Core 需要从其他项目中引用,我为我的 docker 构建环境安装了 BaGet as simple NuGet hosting repo。此容器在nuget.config 中使用其DNS 名称在内部引用,在MyApp 的解决方案级别创建(在新的MyApp.Admin 上相同,但为了简单起见,让我们关注MyApp)。
问题
在MyApp 的Dockerfile 中,我现在正在这样做:
RUN dotnet restore --configfile nuget.config
并且需要访问my-docker 网络上名为baget 的dns 名称。 Researchs show that this is only possible with at least version 3.4 of docker-compose,似乎还没有正式记录。但是Docker removed several options from v2 in v3,例如我正在使用的mem_limits 等资源限制。从 v3 开始,它们仅可使用 swarm,不再适用于单个节点。
因此,除了迁移到 v3 和 swarm 之外,我目前没有看到任何解决方案,这会导致额外的工作和复杂性,除了这个网络问题之外没有其他好处。我的项目并不需要swarm那么大。
【问题讨论】:
标签: c# docker asp.net-core docker-compose nuget