情况:
我已经将现有代码从gitlab克隆到我的本地机器中。然后我做了:
BottomSheetDialogFragment
然后我有一个标签为docker-compose -f env/docker-compose.base.yml -f env/dev/docker-compose.yml up -d
的新图片。
然后我在Dockerfile中更改了一些东西,然后将代码推送到gitlab。然后我删除了manuelly的图像:
local
然后第一个命令再次重建新图像:
docker rmi -f image_hash
然后我有了标记为docker-compose -f env/docker-compose.base.yml -f env/dev/docker-compose.yml up -d
的新图片。 (而不是local
,但为什么?)
然后我想推动图像。我推了它。然后在Amazon ECR中,我看到带有标签`local'的图像..:/
我真的很困惑,你们如何处理版本化码头图像的流程?
我在登台服务器中有一个脚本,用latest
提取新图像。
答案 0 :(得分:1)
遗憾的是,您对docker-compose的使用根本不正确。
首先要做的事情是:Docker Compose用作开发工具来部署一堆服务,卷,网络等,以便任何人都可以进入并启动使用您的应用程序所需的环境。
这是它唯一的目标 - 是的,确定 - 它可以"建立一个图像"如果你的撰写文件中有build
节;但它真的只用于然后立即运行该图像。我猜你可以这样构建,然后通过标记重命名你的图片 - 但这不是正确的过程。
其次;如果你想只为你的撰写文件构建图像 - 你想使用docker-compose build
;将根据指定的指令构建 - 但不会运行它。
现在 - 实际回答你的问题;您想使用命令docker build
和docker tag
来完成任务。
假设您的本地路径中有Dockerfile
,您可以运行:
docker build -t my_image_name .
这会立即用latest
标记它。标记为completely arbitrary
- 它与Git标记非常相似,但Git标记无法重写而无需重写历史记录。我还应该声明使用最新版本是不好的做法。为什么?因为您不知道自己要部署什么 - 如果您总是引用最新信息,那么当您更新服务并找到一个您没想到的最新消息时,您可以陷入困境。
现在,latest
被用作默认值 - 但您可以通过以下方式轻松地为其命名:
docker build -t my_image_name:my_tag .
最后 - 如果你想重命名那个标签(你可以用my_tag
替换latest
如果你选择 - 再次,它是任意的,除了它是默认的。你。如果您愿意,还可以创建完全不同的图像名称。
docker tag my_image_name:my_tag my_new_name:latest。
希望这能为你解决问题!