我对Docker的撰写和构建顺序有疑问。以下是用于启动.net应用程序的dockerfile
您可以看到,在构建过程中,我使用“ RUN dotnet test backend_test / backend_test.csproj”运行了一些测试
这些测试要求存在mongodb数据库。
我尝试使用docker-compose及其“ depends_on”功能解决此依赖性,请参见下文。
但是,这似乎不起作用,因为当我运行“ docker-compose up”时,我得到以下信息:
由于不存在mongodb,测试最终会超时。
dependency_on会真正影响构建顺序,还是仅影响开始顺序(即构建一切以正确顺序开始的收益)?
还有另一种方法吗? (我希望测试能够在构建最终应用程序时运行)
请提前告知我,如果您需要其他信息
答案 0 :(得分:2)
您猜到,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)的原因< / p>