0

我很难找到任何适当的示例,说明如何通过 jenkinsfile 为 Pipeline 作业构建、注册和运行 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 文件,我觉得这很奇怪,因为该命令运行 Dockerfile 的同一目录。接下来,我无法提供任何一致的示例来说明如何注册、推送和运行映像。任何帮助将不胜感激!

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

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

不知道这是指什么。

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

4

2 回答 2

1

docker.build命令需要一个带有可选标签的图像名称作为参数。

文档中:

名称组件可能包含小写字母、数字和分隔符。分隔符定义为句点、一个或两个下划线或一个或多个破折号。

所以名字myService是无效的,因为大写S

此外,该docker.build命令在同一位置查找 a Dockerfile,因此您不需要-f ${pwd}/Dockerfileon 参数

docker.build('myservice')应该管用

于 2017-06-10T13:54:51.333 回答
0

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

命名 docker 镜像时不要使用大写。这是一个标准。

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

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

于 2017-06-10T16:17:40.860 回答