当前位置: 首页 > 知识库问答 >
问题:

设置QEMU时发生Github操作错误-错误:找不到可执行文件:docker

轩辕经赋
2023-03-14

我正在构建一个工作流来测试、构建docker映像并将其推送到GitHub私有存储库。

我曾经在ububntu最新版本上运行该操作,并使用特定的PHP版本和一些环境构建,但由于它与生产构建不完全相同,因此出现了一些问题。

我想使用与生产相同的环境,所以我使用了一个利用php7.3的容器,在ubuntu最新版本上运行操作后调用了该容器

我现在面临的问题是,在成功更新composer之后,我无法调用默认步骤tp build docker image。我在“设置QEMU”步骤中遇到此错误

Error: Unable to locate executable file: docker. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.

这是我的行动


name: Build and Publish Docker for development

on:
  push:
    branches: development

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: egahmad/php7.3-laravel-apache-development
#      volumes:
#        - app_files:/var/www/html/

    services:
      mysql:
        image: mysql:5.7
        env:
          MYSQL_DATABASE: db
          MYSQL_USER: user
          MYSQL_PASSWORD: secret
          MYSQL_ROOT_PASSWORD: secret
        ports:
          - 3306:3306
        options: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3

    steps:
      - uses: actions/checkout@v2

      - name: Verify TNT MySQL connection
        run: |
          mysql --version
          sudo apt-get install -y default-mysql-client
          mysql --host mysql --port ${{ job.services.mysql.ports['3306'] }} -uuser -psecret -e "SHOW DATABASES"

      - name: Copy .env
        run: |
          php -r "file_exists('.env') || copy('.env.cicd', '.env');"

      - name: Install Dependencies
        run: composer install

      - name: Generate key
        run: php artisan key:generate

      - name: Directory Permissions
        run: chmod -R 777 storage bootstrap/cache

      - name: Execute tests (Unit and Feature tests) via PHPUnit
        env:
          MYSQL_DATABASE: db
          DB_USERNAME: user
          DB_PASSWORD: secret
          DB_PORT: ${{ job.services.mysql.ports[3306] }}
        run: vendor/bin/phpunit

      - name: Set up QEMU
        uses: docker/setup-qemu-action@v1
      - name: Set up Docker Buildx
        uses: docker/setup-buildx-action@v1
      - name: Login to GitHub Container Registry
        uses: docker/login-action@v1
        with:
          registry: ghcr.io
          username: ${{ github.repository_owner }}
          password: ${{ secrets.GITHUB_SECRET }}
      - name: Build and push
        uses: docker/build-push-action@v2
        with:
          context: .
          file: ./Dockerfile
          push: true
          target: ci
          tags: ghcr.io/account/image:development
          build-args: |
            GITHUB_USER=${{ secrets.GITHUB_USERNAME }}
            GITHUB_PASSWORD=${{ secrets.CR_PAT }}
      - name: Image digest
        run: echo ${{ steps.docker_build.outputs.digest }}

共有1个答案

丁阎宝
2023-03-14

在egahmad/php7.3-laravel-apache-development上没有docker命令,我不认为qemu步骤设计为在容器中运行(它们正在对内核进行更改)。要在ubuntu最新主机上运行qemu步骤,我相信您需要删除container部分。如果步骤需要此环境,可以尝试将作业拆分为多个作业,其中一些步骤在容器中运行,其他步骤直接在主机上运行。

如果您在Github Actions中执行所有这些步骤,因为您的docker构建需要已经创建的二进制文件,我建议迁移到多阶段构建。第一阶段是您的egahmad/php7.3-laravel-apache-Development映像,运行您当前在GHA中执行的步骤,然后第二阶段将从第一阶段而不是构建上下文复制。

 类似资料:
  • 当我试图使用命令: 错误:发生了JNI错误,请检查您的安装并在线程“main”java中重试。lang.NoClassDefFoundError:org/apache/http/client/ClientProtocolException 它在eclipse中运行良好。请帮忙。

  • 我正在学习Java,并试图用Swing制作一个非常简单的程序。我使用命令行java工具。 这是我第一次尝试制作.jar文件,所以如果这是一个琐碎的问题,我很抱歉。

  • 我开始使用GitHub Actions,并且能够为Elixir设置CI管道,操作构建和测试没有任何问题。我还想使用heroku操作部署应用程序,所以我继续添加了GitHub中可用的应用程序,但在这样做之后,我收到了以下错误: 无效的工作流文件每个步骤都必须定义一个用途或运行键 这是我的工作流程在添加heroku操作之前的样子: 这就是我添加heroku动作的方式 以下是错误以了解更多详细信息。

  • 我收到一个错误,这个读取while循环。即使我用打印所有内容,它也会显示count tt==0。这意味着,while循环甚至不工作? 尝试捕获输入。 这是我有问题的代码。 这是我正在阅读的文本文件

  • 问题内容: 我正在尝试将Postgres与Docker一起构建Flask应用程序。我想连接到Postgres的AWS RDS实例,但是将Docker用于我的Flask应用程序。但是,在尝试设置时会遇到错误,因为找不到。这是错误: 这是我的: 许多其他问题在本地似乎也有类似的问题,但没有一个涉及使用Docker。 这似乎是一个Docker问题,因为我可以设置本地虚拟环境,并且安装正常,因为我在本地安

  • 我完全按照这个例子,[http://kubernetes.io/docs/hellonode/,] 在我运行[kubectl run hello-node--image=gcr.io/project_id/hello-node:v1--port=8080 deployment“hello-node”created]之后。pod运行不正常,我得到了CrashLoopBackOff状态,我没有部署执行