'Is there a way to set path for docker build with the github action plugin docker/build-push-action@v1

I have a docker build action as below

      - name: build-push
        uses: docker/build-push-action@v1
        with:
          username: ${{ DOCKER_USERNAME }}
          password: ${{ DOCKER_PASSWORD }}
          repository: <repo>
          tags: tag
          push: true
          dockerfile: ./<path-to-dockerfile>/Dockerfile

The dockerfile has instructions to ADD few files to the docker image as below

ADD file1 .
ADD file2 .
ADD file3 .

the structure of github is:

-.github
-folder1------------
                   |
                   folder2-------------
                                       |
               -----------------------docker--------
               |             |           |          |
            file1          file2        file3      Dockerfile

The issue is that the GitHub action is unable to find file1, file2 and file3 as it is looking in the level of folder1. The error generated is

ADD failed: file not found in build context or excluded by .dockerignore: file1: file does not exist

I do not want to modify the path in dockerfile as ADD ./folder1/folder2/file1 .. So how do I add path or change directory from the GitHub Action part using docker/build-push-action@v1 ?



Solution 1:[1]

Instead of using docker/build-push-action@v1 use docker/build-push-action@v2 as v1 is an older version. Modify the GitHub action as below

  - name: Login to Docker Hub
    uses: docker/login-action@v1
    with:
      username: ${{ secrets.DOCKER_USERNAME }
      password: ${{ secrets.DOCKER_PASSWORD }}
  - name: build-push
        uses: docker/build-push-action@v2
        with:
          context: ./folder1/folder2/docker/
          tags: tag
          push: true
          dockerfile: ./<path-to-dockerfile>/Dockerfile

using context with the github action will solve this issue. Context is available only with v2 verison.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1