我对 docker compose 和构建顺序有疑问。下面是用于启动 .net 应用程序的 dockerfile
正如您所看到的,作为我构建过程的一部分,我使用“RUN dotnet test backend_test/backend_test.csproj”运行一些测试
这些测试需要存在 mongodb 数据库。
我尝试使用 docker-compose 及其“depends_on”功能来解决此依赖性,请参见下文。
但是,这似乎不起作用,因为当我运行“docker-compose up”时,我得到以下信息:
由于不存在 mongodb,测试最终超时。
depends_on 实际上会影响构建顺序还是仅影响启动顺序(即构建以正确顺序启动的所有内容)?
还有其他方法可以做到这一点吗? (我希望测试作为构建最终应用程序的一部分运行)
如果您需要额外信息,请提前告诉我
最佳答案
正如您所猜测的,depends_on
仅适用于运行时顺序,而不适用于构建时间 - 它只是 affects docker-compose up
and docker-compose stop
.
我强烈建议您使所有构建彼此独立。也许您需要在这里考虑单独的构建器和运行时镜像,和/或使用基于 Docker 的 CI(Gitlab、Travis、Circle 等)来让这些依赖项可用于测试。
另请注意,depends_on
常常让人失望 - 因为它只是等待 Docker 启动完成,而不是应用程序启动。因此,当依赖于它的容器启动时,您的数据库/服务/任何可能仍在启动的内容将开始使用它,导致超时等。这就是为什么 HEALTH_CHECK
现在存在(具有类似的 healthcheck
feature in Docker Compose )
关于mongodb - Docker 撰写构建顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60139255/