'Unable to build a docker image in a Bitbucket pipeline

When I try to build an image for my application, an image that relies upon buildkit, I receive an error: failed to dial gRPC: unable to upgrade to h2c, received 403

I can build standard docker images, but if it relies on Buildkit, I get errors

Specifically, the command that fails is:

docker build --ssh default --no-cache -t worker $BITBUCKET_CLONE_DIR/worker

My bitbucket-pipelines.yml is as follows, the first two docker build commands work, and the images are generated, however the third, that relies on buildkit does not.

image: docker:stable

pipelines:
  default:
    - step:
      name: build
      size: 2x
      script:
         - docker build -t alpine-base $BITBUCKET_CLONE_DIR/supporting/alpine-base
         - docker build -t composer-xv:latest $BITBUCKET_CLONE_DIR/supporting/composer-xv
         - apk add openssh-client
         - eval `ssh-agent`
         - export DOCKER_BUILDKIT=1
         - docker build --ssh default --no-cache -t worker $BITBUCKET_CLONE_DIR/worker
         - docker images

      services:
       - docker
      caches:
       - docker

My Dockerfile is as follows:

# syntax=docker/dockerfile:1.0.0-experimental
FROM composer:1.7 as phpdep

COPY application/database/ database/

COPY application/composer.json composer.json
COPY application/composer.lock composer.lock

# Install PHP dependencies in 'vendor'
RUN --mount=type=ssh composer install \
    --ignore-platform-reqs \
    --no-dev \
    --no-interaction \
    --no-plugins \
    --no-scripts \
    --prefer-dist

#
# Final image build stage
#
FROM alpine-base:latest as final

ADD application /app/application
COPY --from=phpdep /app/vendor/ /app/application/vendor/
ADD entrypoint.sh /entrypoint.sh

RUN \
    apk update && \
    apk upgrade && \
    apk add \
        php7 php7-mysqli php7-mcrypt php7-gd \
        php7-curl php7-xml php7-bcmath php7-mbstring \
        php7-zip php7-bz2 ca-certificates php7-openssl php7-zlib \
        php7-bcmath php7-dom php7-json php7-phar php7-pdo_mysql php7-ctype \
        php7-session php7-fileinfo php7-xmlwriter php7-tokenizer php7-soap \
        php7-simplexml && \
    cd /app/application && \
    cp .env.example .env && \
    chown nobody:nobody /app/application/.env && \
    sed -i 's/;openssl.capath=/openssl.capath=\/etc\/ssl\/certs/' /etc/php7/php.ini && \
    sed -i 's/memory_limit = 128M/memory_limit = 1024M/' /etc/php7/php.ini && \
    apk del --purge curl wget && \
    mkdir -p /var/log/workers && \
    mkdir -p /run/php && \
    echo "export PS1='WORKER \h:\w\$ '" >> /etc/profile

COPY files/logrotate.d/ /etc/logrotate.d/

CMD ["/entrypoint.sh"]


Solution 1:[1]

Bitbucket pipelines don't support DOCKER_BUILDKIT, it seems, see: https://jira.atlassian.com/browse/BCLOUD-17590?focusedCommentId=3019597&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-3019597 . They say they are waiting for this; https://github.com/moby/buildkit/pull/2723 to be fixed...

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 farialima