我正试图在Google App Engine上上传一个yesod Docker容器。源代码是 此处 和Docker镜像是 此处.
我按照文件中的 自定义运行时快速启动当调用 gcloud app deploy
在增加构建超时后,应用程序构建得很好,但容器要么在尝试启动时进行就绪检查,要么显示以下超时消息。
ERROR: (gcloud.app.deploy) Operation [apps/meeshkan-github-webhook-router/operations/xxxx-xxxx-xxxx] timed out. This operation may still be underway.
我试着做了一些实验,包括手动检查准备状态,创建一个新的容器 /_ah/health
端点,并将就绪检查的超时时间一直增加到 1799 秒,但这些操作似乎都不起作用。
其中一个问题可能是容器的大小(它是3.2gb),我可以尝试将其修剪下来,但只有当有人能够确认容器大小是导致部署问题的因素时,我才会这样做。除此之外,我不知道是什么原因导致了这个失败。docker镜像在我们的本地机器上启动正常。
预先感谢您的帮助和建议
问题原来是,因为我是在Windows上构建的,在Windows上使用Docker Desktop构建的镜像自动给了所有shell脚本可执行的权限,而Linux上的Docker需要给shell脚本可执行的权限。通过在我的Dockerfile中添加这一行。
RUN chmod +x /usr/src/app/run.sh
一切都很顺利!