我在编写 Jenkinsfile
时遇到了问题。
我的环境:
- 运行docker的服务器
- Jenkins 在服务器上作为容器运行
我在 DockerHub 上有一个 Docker 镜像,我可以毫无问题地获取该镜像。
我的 Jenkinsfile
目前看起来是这样的:
pipeline {
agent {
docker {
image 'emil2709/servopsdockerfile'
args '-d -p 80:80 /usr/sbin/apache2ctl -D FOREGROUND'
}
}
stages {
stage ('Testing') {
steps {
sh 'echo testing'
}
}
stage ('Deploying') {
steps {
sh 'echo deploying'
}
}
}
}
容器不会运行。
我想:
- 制作一个测试容器
- 如果我的所有测试都正常,我想部署一个新的容器作为网络服务器。
我的问题是让 Docker 容器运行,我该怎么做?
最佳答案
您可以在 docker 镜像上运行测试,该镜像具有构建和测试源代码所需的工具。然后,在构建项目之后,您可以创建一个新的 docker 镜像。
假设您有一个使用 maven 的 java 项目。在这种情况下,测试并构建您的源代码。然后,在下一阶段,只需创建您的 docker 镜像即可。
IMAGE_ID:包含必要工具的docker镜像,本例为maven。
并且您需要一个 Dockerfile 来发出命令 docker build
pipeline {
stages {
stage ('Building') {
steps {
sh '''
docker run -i --rm -v ./:/src -w /src IMAGE_ID /bin/bash -c "mvn test package"
'''
}
}
stage ('dockerization') {
steps {
sh '''
docker build -t your_tag .
docker push ...
'''
}
}
}
}
一个最小的 Dockerfil 示例:
FROM openjdk:8-jdk
COPY target/*.jar /app/application.jar
EXPOSE 8080
ENTRYPOINT java -jar /app/application.jar
关于docker - 使用 Jenkinsfile 让容器运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48884007/