В этой строке файла Docker есть проблема:
docker build \
-t $CONTAINER_IMAGE \
-t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE ./app
docker build
Синтаксис команды:
docker build [OPTIONS] PATH | URL | -
Если мы используем опцию -t
, тогда мы указываем имя образа контейнера.
В приведенной выше команде, поскольку вы использовали две опции -t
, поэтому после первого -t
все используется как путь к файлу dockerfile, что неверно, из-за чего появляется эта ошибка unable to prepare context: path " " not found
.
Итак, правильный синтаксис должен быть:
docker image build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE ./app
.
Это модифицированный файл Docker:
name: Building and pushing a docker image to Amazon ECR
on: [push, pull_request]
env:
AWS_DEFAULT_REGION: ap-southeast-1
AWS_DEFAULT_OUTPUT: json
AWS_ACCOUNT_ID: ${{ secrets.AWS_ACCOUNT_ID }}
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
CONTAINER_IMAGE: myimage:${{ github.sha }}
jobs:
build-and-push:
name: Building and pushing image to AWS ECR
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@master
- name: Setup ECR
run: |
$( aws ecr get-login --no-include-email )
- name: Build and tag the image
run: |
docker image build -t $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE ./app
- name: Push
if: github.ref == 'refs/heads/master'
run: |
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$CONTAINER_IMAGE
Раздвоили свой проект и запустили тоже самое. Шаг сборки и добавления тега к изображению успешно выполнен на Git Действиях.
На следующем шаге происходит сбой, т.е. Pu sh шаг с ошибкой
The repository with name 'myimage' does not exist in the registry with id '***'
.
Для этого вам нужно создать репозиторий изображений в реестре контейнера ECR. Вы можете сослаться на этот ответ для того же Pu sh docker изображения в хранилище amazon ecs