我最近使用Docker将Springboot应用程序部署到了AWS。
尝试更新图片/容器我疯了。我尝试删除所有内容,已使用和未使用的容器,图像,标签等,然后再次推送所有内容。 Docker系统剪枝,docker rm,docker rmi,也使用其他帐户...它仍在运行该项目的旧版本。
这一切都表明在服务器级别发生了一些事情。我正在使用PuTTY。
非常感谢您的帮助。
答案 0 :(得分:1)
旧容器是什么意思?您是从某个版本控制中进行了一些更改,然后又未在容器上进行更新?还是只是在docker restart 我想要的容器
答案 1 :(得分:0)
这里有很多要解压的东西,所以如果您可以提供更多信息-那就很好了。但这是一个可能的共同点。
如果您使用任何AWS服务(EKS,Farget,ECS),则这些服务仅基于您为其提供的Docker映像。因此,如果您的图片未正确更新,它们将不会更新。
但是docker run
也会发生相同的情况。如果您继续指向同一张图片(或者该图片在概念上未更改),则不会有任何更改。
所以我怀疑问题出在Docker或AWS内。
最有可能
您不会随着每次更改而重新构建spring应用程序二进制文件
您的Dockerfile输入了错误的二进制文件
如果使用的图像托管服务(例如ECR或Nexus),则需要确保图像名称指向正确的image:tag组合。如果更新映像,则应为其赋予唯一的标签,然后再给Docker / AWS引用的已标记的映像
构建映像后,可以使用docker export <container_id> | tar -xf - <location_of_binary_in_image_filesystem>
那将拉出二进制文件。然后,您可以在本地运行它以测试它是否是您想要的。
您可以使用docker export <container_id> | tar -tf - | less