来自守护程序的错误响应:找不到镜像。

3

我想在 Github 工作流中运行以下 Docker Compose yml,但是我遇到了以下错误:


Error response from daemon: No such image: ghcr.io/whats/app/backend/222243434353535353f

下面是需要翻译的内容:

在下面的“标记图像”点上发生错误

Docker Ci文件如下:

env:
    WEB_IMAGE_BASE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/backend
    WEB_IMAGE: ghcr.io/$(echo $GITHUB_REPOSITORY | tr '[:upper:]' '[:lower:]')/backend:$( echo $GITHUB_SHA )

jobs:
  build:
    name: Build Docker Images
    runs-on: ubuntu-latest
    steps:
      - name: Prepare images
        run: |
          echo "WEB_IMAGE=$(echo ${{env.WEB_IMAGE}} )" >> $GITHUB_ENV
          echo "WEB_IMAGE_BASE=$(echo ${{env.WEB_IMAGE_BASE}} )" >> $GITHUB_ENV

      - name: Build images
        run: |
          docker-compose -f ci.yml build backend

      - name: Tag images
        run: |
          docker tag ${{ env.WEB_IMAGE }}  ${{ env.WEB_IMAGE_BASE }}:latest

ci.yml 是指持续集成的配置文件。
 ​version​: ​"​3.9​" 
  
 ​services​: 
   ​backend​: 
     ​image​: ​backend_prod
 

我做错了什么?请指出如何修复这个问题。

与您的问题无关,但那些用反引号括起来的“echo”是无用的。 - tripleee
1个回答

4
您正在尝试标记并使用不存在的图像作为源。图像ghcr.io/whats/app/backend/222243434353535353f未在任何地方创建。
您需要在tag命令中使用docker-compose build生成的构建图像作为源。
由于您在compose文件中指定了image: backend_prod,因此您的图像将以此命名。
请尝试更改docker compose中的图像,例如:
version: "3.9"
services:
  backend:
    build:
      context: .
      dockerfile: ./backend/dockerfile
    image: backend_prod:local

并更改您的ci文件:

- name: Tag images
    run: |
      docker tag backend_prod:local ${{ env.WEB_IMAGE_BASE }}:latest

您可以在docker-compose中这里了解更多关于镜像标签的信息。


你能否编辑你的问题并附上 ci.yaml 文件? - Sergio Santiago
我修改了我的答案。我没有测试过,但你可以有个想法。 - Sergio Santiago
是的!那给了我一些方向。诀窍就是在ci.yml中简单地交换图像值image: "${WEB_IMAGE}",并保持其他所有内容不变。 - Joseph Adam
很好,如果这有帮助,请标记为已回答,谢谢。 - Sergio Santiago

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接