如何在 docker-compose 文件中将 url 作为图像名称

Ale*_*bbe 1 docker docker-compose

我正在尝试编写一个 docker-compose 文件,该文件将构建并将我的图像的版本(1.0、1.1...)和最新版本推送到我的本地 v2 docker 注册表。但是,当我运行时,docker-compose build出现以下错误:

ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
Run Code Online (Sandbox Code Playgroud)

我发现很多人出于多种不同的原因抱怨这个错误,在我的例子中,它与权限或天气或 docker 服务是否正在运行无关,我将其范围缩小到我的图像命名上有一个 URL(我的本地注册表的 URL),我知道这一点,因为如果我正常命名我的图像(如“/app:latest”),那么命令运行正常。那么如何才能有一个 URL 作为图像名称呢?

这是我想要做的(docker-compose.yaml):

ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.
Run Code Online (Sandbox Code Playgroud)

一般来说,我对 docker 很陌生,我的主要目标是有一个简单的、最好是一个命令(例如docker-compose build),它将构建并标记我的前端和后端图像,以便我可以执行docker-compose push以推送那些新创建的图像图像到我在 AWS 上运行的注册表。这样,我还希望能够覆盖注册表中这些映像的最新版本,同时添加版本化映像以进行备份,以防我将来想重新访问这些版本中的任何一个。

然后,在 AWS EC2 机器中,我有另一个docker-compose.yaml文件,它只获取两个映像的最新版本并运行它们的容器。

总而言之,我将在本地计算机上开发应用程序,然后手动将新版本添加到本地docker-compose.yaml文件中的版本化服务中,然后docker-compose build运行docker-compose push​​; 然后 ssh 进入我的 AWS 机器并运行docker-compose up以获取最新和新更新的图像并运行它们。

这稍后可能会演变成 CI/CD 管道,但现在我正在采取一些小步骤,并尝试让我的图像名称中包含 URL。

谢谢。

编辑

我尝试使用.envwithREGISTRY=http://my_registry_url:5000/marvin然后使用image: "${REGISTRY}/frontend:latest"orimage: "$${REGISTRY}/frontend:latest"但这也不起作用

Mil*_*vic 5

http://只需从图像中删除该部分即可。

  • 谢谢,就是这样。一旦堆栈溢出允许我接受答案。 (2认同)