This version of the documentation is related to Vue Storefront V1 and is marked as deprecated. For the current (v2) docs, visit the recent version.

Build docker image

Building images with Kaniko and GitLab CI/CD

Docker-in-docker builds (opens new window) requires privileged mode in order to function, which is a significant security concern and because of that, we recommend using kaniko (opens new window) to build docker images. On the Storefront Cloud CI is configured to use Kaniko by default. More information about GitLab and Kaniko you can find in GitLab documentation (opens new window)

Building image for Vue Storefront and Vue Storefront API

The code below is a standard configuration for the build stage in both Vue Storefront and Vue Storefront API applications.

  stage: build
    entrypoint: [""]
    - echo "{\"auths\":{\"$REGISTRY_URL\":{\"username\":\"$REGISTRY_USER\",\"password\":\"$REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - TAG=${CI_COMMIT_SHA:0:8}
    - if [ -n "$CI_COMMIT_TAG" ]; then TAG=$CI_COMMIT_TAG; fi
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/dev/docker/Dockerfile --destination $REGISTRY_IMAGE:$TAG
    - develop
    - tags

How read this configuration? Let's focus on the script definition. In the first line of the script definition is created a file with access data to our Docker Registry (opens new window) where all images are stored. Access to the Docker Registry is limited, user and pass are variables stored in GitLab, about our Docker Registry is separated article. In the second line is created docker tag name. In the third line is chacked if is git tag (deploy on prod is limited only to tagged versions, read more). In the last line, the docker image is built. As you can see docker image is built from Dockerfile which is part of the application code and is stored in directory dev/docker/Dockerfile. This job is running only for branch develop or for git tag.