调试在构建第一个服务时冻结的 docker-compose 构建

Dmi*_*uev 2 containers amazon-ecs docker docker-compose

我一直在学习如何将 docker 容器部署到 AWS 的教程,我已经成功地做到了。然而,现在我已经用自己的代码/逻辑修改了一个 Flask web 应用程序,它永远不会完成第一个服务的构建。

我的最后一条命令:

docker-compose -f docker-compose-prod.yml up -d --build
Run Code Online (Sandbox Code Playgroud)

明星说:

Building feapi

然后什么也没发生,有时我会得到:

ERROR: SSL error: ('The write operation timed out',)
Run Code Online (Sandbox Code Playgroud)

我如何调试这个或至少看看幕后发生了什么,因为我不确定是什么导致了错误?我知道 docker-compose 提供日志,但不确定如何实现它以及是否有必要。

Agn*_*Kis 5

有时您的上下文包含太多文件。

当 docker 构建开始时,它会收集您的项目文件夹/上下文目录中的所有文件,除非您在.dockerignore 中提及它们。如果您周围有 GB 的文件,它可以收集它几分钟,并且生成的图像大小将非常大。

在官方文档(https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)中,请参阅本段:

“在您的 Dockerfile 不需要将文件复制到映像中的情况下,省略构建上下文可能很有用,并提高了构建速度,因为没有文件被发送到守护程序。”

如果您不确定构建上下文的大小,您可以运行一个 simple docker build,它会打印它找到的上下文大小。例如。:

> docker build -t check-context:latest .
Sending build context to Docker daemon  1.086MB
...
Run Code Online (Sandbox Code Playgroud)