Gitlab pipeline error when building quarkus project and dockerizing it

Viewed 25

I wrote a simple pipeline in gitlab to build a quarkus project, to dockerize it and to push the final image to a registry. Here it is:

image: maven:latest

stages:
  - build-package-dockerize
  - deploy

before_script:
  - apt-get update -qq
  - apt-get install -y -qq build-essential libz-dev zlib1g-dev

build, package, dockerize:
  stage: build-package-dockerize
  script:
    - mvn clean package -DskipTests -Dquarkus.profile=dev -Dquarkus.container-image.build=true -Dquarkus.container-image.push=true -Dquarkus.container-image.group=pss -Dquarkus.container-image.tag=$CI_BUILD_REF -Dquarkus.container-image.registry=$DOCKER_REGISTRY_AZURE_URL -Dquarkus.container-image.username=$DOCKER_REGISTRY_AZURE_USERNAME -Dquarkus.container-image.password=$DOCKER_REGISTRY_AZURE_PASSWORD 
  only:
    - DEV

When the pipe runs it returns error in ryuk container deployment:

[INFO] Container testcontainers/ryuk:0.3.3 is starting: 2611772cb72f4f2437ee1c405243d7519dfe787d8a0f343b292e8b2db4aa4869
1745[ERROR] Could not start container
1746java.lang.IllegalStateException: Container is removed
[ERROR] There are no stdout/stderr logs available for the failed container
1777[WARNING] [io.quarkus.deployment.IsDockerWorking] No docker binary found or general error: java.lang.RuntimeException: Input/Output error while executing command.

Any help?

Thanks

1 Answers

I tried many times doing it with docker but it was a mess (cause Docker in docker). I believe you have the same problem because your error states that No docker binary found.

My solution would be easier, try with Jib. Quarkus supports it by default and it's much easier to use, see my example :

image: maven:latest

stages:
  - build-package-dockerize
  - deploy

before_script:
  - apt-get update -qq
  - apt-get install -y -qq build-essential libz-dev zlib1g-dev

build-package-dockerize:
  stage: build-package-dockerize
  script:
    - mvn clean package
      -DskipTests
      -Dquarkus.profile=dev
# Instruct Quarkus to use Jib
      -Dquarkus.container-image.builder=jib
# Don't forget to add token file to repo, otherwise you'll get http 401 when pushing
      -Dquarkus.jib.to.auth.username=gitlab-ci-token
      -Dquarkus.jib.to.auth.password=${CI_TOKEN_PASSWORD}
      -Dquarkus.container-image.build=true
      -Dquarkus.container-image.push=true
      -Dquarkus.container-image.group=pss
      -Dquarkus.container-image.tag=$CI_BUILD_REF
      -Dquarkus.container-image.registry=$DOCKER_REGISTRY_AZURE_URL 
      -Dquarkus.container-image.username=$DOCKER_REGISTRY_AZURE_USERNAME
      -Dquarkus.container-image.password=$DOCKER_REGISTRY_AZURE_PASSWORD 
  only:
    - DEV

I'm using it right now for multiple projects, and its working perfectly.

For reference, you can find every Jib params here Quarkus Jib

Related