繁体   English   中英

Gitlab 构建 quarkus 项目并对其进行 docker 化时出现管道错误

[英]Gitlab pipeline error when building quarkus project and dockerizing it

我在 gitlab 中编写了一个简单的管道来构建一个 quarkus 项目,将其 docker 化并将最终图像推送到注册表。 这里是:

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

当 pipe 运行时,它在 ryuk 容器部署中返回错误:

[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.

有什么帮助吗?

谢谢

我用 docker 尝试了很多次,但它一团糟(因为 Docker 在 docker 中)。 我相信您有同样的问题,因为您的错误指出No docker binary found

我的解决方案会更容易,试试 Jib。 Quarkus 默认支持它,而且它更容易使用,见我的例子:

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

我现在将它用于多个项目,并且运行良好。

作为参考,您可以在此处找到每个 Jib 参数Quarkus Jib

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM