Ошибка: невозможно подготовить контекст: путь "" не найден при построении и добавлении тегов docker image - PullRequest
3 голосов
/ 10 марта 2020

В продолжение моего предыдущего вопроса

Я пытаюсь создать и вставить sh docker образ в Amazon ECR с помощью GitHub Actions, следуя этому учебнику

Но я получаю следующую ошибку:

Run docker build \ 
unable to prepare context: path " " not found

enter image description here

Может кто-нибудь помочь мне решить эту проблему ??

Редактировать 1:

Как заявлено @banyan, я создал каталог app enter image description here

enter image description here

Но все равно я получаю ту же ошибку.

Чтобы узнать больше, пожалуйста go через это

Ответы [ 2 ]

1 голос
/ 19 марта 2020

В этой строке файла 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 Действиях. enter image description here

На следующем шаге происходит сбой, т.е. Pu sh шаг с ошибкой

The repository with name 'myimage' does not exist in the registry with id '***'.

Для этого вам нужно создать репозиторий изображений в реестре контейнера ECR. Вы можете сослаться на этот ответ для того же Pu sh docker изображения в хранилище amazon ecs

0 голосов
/ 10 марта 2020
❯ docker build " "
unable to prepare context: path " " not found

Я думаю, что статья ожидает, что ./app/Dockerfile запустится docker build. но нет каталога приложений, поэтому действие не может быть запущено.

...