Jenkins:使用 Jenkins 文件的管道 Docker 作业 - Docker groovy 语法

Jenkins: Pipeline Docker Job with Jenkins file - Docker groovy syntax

我很难找到关于如何通过 jenkinsfile 为管道作业构建、注册和 运行 docker 图像的任何适当示例。这是我目前所拥有的:

node {
    def myService

    stage('Checkout Project') {
        checkout scm
    }

    stage('Build Binary') {
        sh "mvn package -f pom.xml -Dmaven.test.skip=true"
    }

    stage('Build Image') {
        sh "pwd"
        myService = docker.build('myService -f ${pwd}/Dockerfile')
    }

    stage('Test Image') {
        sh "echo Tests Passed :)"
    }

    stage('Run uShip Docker Container') {
        myService.run()
    }
}

我遇到的第一个问题是当 docker.build() 触发时,它找不到我的 docker 文件,我觉得这很奇怪,因为命令 运行 与文件。接下来我无法提供任何一致的示例来说明如何注册、推送和 运行 图像。任何帮助将不胜感激!

更新:很好地解决了 docker 无法找到 docker 文件的问题。这是一个命名问题;我的 docker 文件是名称 "DockerFile" 而不是 "Dockerfile"。重命名并且它有效,但现在我收到另一个错误:

无效的存储库名称 (myService),只允许 [a-z0-9-_.]

不确定这是指什么。

更新:除了我最初的问题,docker-compose 文件必须是 .yml 类型还是可以是 .properties 文件?

docker.build命令expects图像名称,带有可选标签作为参数。

来自documentation

Name components may contain lowercase letters, digits and separators. A separator is defined as a period, one or two underscores, or one or more dashes.

因此名称 myService 无效,因为大写 S

此外,docker.build 命令在同一位置查找 Dockerfile,因此您不需要参数

上的 -f ${pwd}/Dockerfile

docker.build('myservice') 应该有效

存储库名称 (myService) 无效,仅允许 [a-z0-9-_.]

命名您的 docker 图片时不要使用大写字母。这是一个标准。

docker-compose 文件必须是 .yml 类型还是可以是 .properties 文件?

docker-compose 文件应始终是 yaml 文件。