很多问题似乎已经被问到如何在一个解决方案中获得多个项目,使用docker,但没有一个解决方案。
为了设置场景,我们有多个.NET核心API,每个API作为一个单独的VS 2019解决方案。它们都需要能够(至少)使用本地运行的同一个RabbitMQ容器,因为它处理服务之间的所有通信。
通过以下方法,我已经能够让这个设置在一个解决方案中工作:

现在,当我启动所有新的RabbitMQ和MongoDB容器时,都会创建它们。
然后,我对另一个解决方案做了完全相同的事情,而且由于RabbitMQ端口已经在使用(即它试图创建另一个新的RabbitMQ映像),所以它无法启动。
我有点期待这一点,但不知道最佳/正确的方式来正确地配置这一点,任何帮助或建议都将是非常感谢的。
发布于 2020-11-12 10:45:26
所以我想我会回答我自己的问题,因为我认为我最终找到了一个好的(不是完美的)解决方案。我做了以下步骤:
H 117When
作为一个brucey奖励,我编写了PowerShell脚本使用每个停靠器-组合文件启动我的所有容器,以及在我打开自己的文件时构建它们。)我只需运行膝上型计算机,我的整个dev环境和10个服务就可以启动和运行了。在大多数情况下,这是很好的工作,但有一些注意事项:
--我使用https和dev-certs,有时情况不太好,我必须清理证书/重新信任它们,因为kestrel抛出错误并期望证书被信任,有一个特定的名称,并且值得信任。我正在改进这一点,但在dev.中,您总是不能在本地使用https,如果您像我一样使用自己的nuget服务器,您将需要一个Nuget.config文件并将其复制为您的停靠文件的一部分。发布于 2020-10-27 11:13:15
通过将context的值设置为适当的相对路径,我能够从多个解决方案组合多个服务。使用您的停靠-撰写示例并添加my-其他api-项目,您将得到如下结果:
services:
my-api-project:
<as you have it currently>
my-other-api-project:
image: ${DOCKER_REGISTRY-}my-other-api-project
build:
context: ../my-other-api-project/ <-- Or whatever the relative path is to your other project
dockerfile: my-other-api-project/Dockerfile
ports:
- <your port mappings>
depends_on:
- some-mongo
- some-rabbit
some-rabbit:
<as you have it currently>
some-mongo:
<as you have it currently>https://stackoverflow.com/questions/61421122
复制相似问题