Docker撰写构建顺序

时间:2020-02-09 17:21:59

标签: mongodb docker asp.net-core docker-compose

我对Docker的撰写和构建顺序有疑问。以下是用于启动.net应用程序的dockerfile

enter image description here

您可以看到,在构建过程中,我使用“ RUN dotnet test backend_test / backend_test.csproj”运行了一些测试

这些测试要求存在mongodb数据库。

我尝试使用docker-compose及其“ depends_on”功能解决此依赖性,请参见下文。

enter image description here

但是,这似乎不起作用,因为当我运行“ docker-compose up”时,我得到以下信息:

enter image description here

由于不存在mongodb,测试最终会超时。

dependency_on会真正影响构建顺序,还是仅影响开始顺序(即构建一切以正确顺序开始的收益)?

还有另一种方法吗? (我希望测试能够在构建最终应用程序时运行)

请提前告知我,如果您需要其他信息

1 个答案:

答案 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>