Ошибка действия Github при настройке QEMU - Ошибка: невозможно найти исполняемый файл: докер
Я создаю рабочий процесс для тестирования, создаю образ докера и отправляю его в частный репозиторий GitHub.
Раньше я запускал экшен на ububntu-latest и использовал определенную версию PHP и некоторые сборки среды, но возникли некоторые проблемы из-за того, что он не идентичен производственной сборке.
Я хотел использовать ту же среду, что и производственная среда, поэтому я использовал контейнер, который использует php7.3, и вызвал его после запуска действия на ubuntu-latest
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что после успешного обновления композитора я не могу вызвать образ докера по умолчанию tp build. Я получаю эту ошибку на этапе «Настройка QEMU»
Ошибка: невозможно найти исполняемый файл: docker. Убедитесь, что либо путь к файлу существует, либо файл находится в каталоге, заданном переменной среды PATH. Также проверьте режим файла, чтобы убедиться, что файл является исполняемым.
Вот мое действие
name: Сборка и публикация Docker для разработки на: толкать: филиалы: развитие вакансии: строить: работает: ubuntu-latest контейнер: изображение: egahmad / php7.3-laravel-apache-development # тома: # - app_files: / var / www / html / Сервисы: mysql: изображение: mysql:5.7 env: MYSQL_DATABASE: db MYSQL_USER: пользователь MYSQL_PASSWORD: секрет MYSQL_ROOT_PASSWORD: секрет порты: - 3306:3306 параметры: --health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3 шаги: - использует: actions / checkout@v2 - имя: Проверить соединение TNT MySQL запустить: | mysql --version sudo apt-get install -y по умолчанию-mysql-client mysql --host mysql --port ${{job.services.mysql.ports['3306']}} -uuser -psecret -e "ПОКАЗАТЬ БАЗЫ ДАННЫХ" - имя: Копировать .env запустить: | php -r "file_exists('.env') || copy('.env.cicd', '.env');" - имя: Установить зависимости запустить: установка композитора - имя: Сгенерировать ключ запустить: php artisan key:generate - имя: Разрешения каталога запустите: chmod -R 777 bootstrap / cache - name: выполнять тесты (модульные и функциональные тесты) через PHPUnit env: MYSQL_DATABASE: db DB_USERNAME: пользователь DB_PASSWORD: секрет DB_PORT: ${{job.services.mysql.ports[3306]}} запустить: vendor / bin / phpunit - name: Настроить QEMU использует: docker / setup-qemu-action@v1 - name: настроить Docker Buildx использует: docker / setup-buildx-action@v1 - name: вход в реестр контейнеров GitHub использует: docker / login-action@v1 с участием: реестр: ghcr.io имя пользователя: ${{github.repository_owner}} пароль: ${{secrets.GITHUB_SECRET}} - имя: Сборка и толчок использует: docker / build-push-action@v2 с участием: контекст:. файл: ./Dockerfile толчок: правда цель: ci Теги: ghcr.io/account/image:development build-args: | GITHUB_USER=${{secrets.GITHUB_USERNAME}} GITHUB_PASSWORD=${{secrets.CR_PAT}}. - название: Дайджест изображения запустить: echo ${{steps.docker_build.outputs.digest}}
1 ответ
В
docker
команда недоступна, и я не верю, что шаги qemu предназначены для работы в контейнере (они вносят изменения в ядро). Чтобы запустить шаги qemu на
ubuntu-latest
host, я считаю, что вам нужно секцию удалитьконтейнера . Если для шагов требуется эта среда, вы можете попробовать разбить задание на несколько заданий, при этом одни шаги выполняются в контейнере, а другие - непосредственно на хосте.
Если вы выполняете все эти шаги в Github Actions, потому что для сборки докера требуются уже созданные двоичные файлы, я бы рекомендовал перейти на многоступенчатую сборку. Первым этапом будет ваш
egahmad/php7.3-laravel-apache-development
изображение, выполняя шаги, которые вы в настоящее время выполняете в GHA, а затем второй этап будет копировать из этого первого этапа, а не из контекста сборки.