下面给你一个**用 Jenkins 部署容器(以 Docker 为例)**的完整思路和常见做法,适合从 0 到 1 落地。
典型流程:
代码提交 (Git)
↓
Jenkins 拉代码
↓
构建镜像 (Docker Build)
↓
推送镜像 (Docker Registry)
↓
部署容器 (Docker Run / Docker Compose / K8s)
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
FROM openjdk:17
COPY app.jar /app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
pipeline {
agent any
stages {
stage('拉取代码') {
steps {
git 'https://github.com/your/repo.git'
}
}
stage('构建镜像') {
steps {
sh 'docker build -t myapp:latest .'
}
}
stage('停止旧容器') {
steps {
sh '''
docker rm -f myapp || true
'''
}
}
stage('启动容器') {
steps {
sh '''
docker run -d --name myapp -p 8080:8080 myapp:latest
'''
}
}
}
}
✅ 适合:
构建 → 推送到 Harbor / Docker Hub → 服务器拉取运行
environment {
REGISTRY = "registry.example.com"
IMAGE = "myapp"
}
stages {
stage('Build') {
steps {
sh 'docker build -t $REGISTRY/$IMAGE:latest .'
}
}
stage('Push') {
steps {
withCredentials([usernamePassword(
credentialsId: 'docker-registry',
usernameVariable: 'USER',
passwordVariable: 'PASS'
)]) {
sh '''
echo $PASS | docker login $REGISTRY -u $USER --password-stdin
docker push $REGISTRY/$IMAGE:latest
'''
}
}
}
stage('Deploy') {
steps {
sh '''
docker pull $REGISTRY/$IMAGE:latest
docker rm -f myapp || true
docker run -d --name myapp -p 8080:8080 $REGISTRY/$IMAGE:latest
'''
}
}
}
version: "3"
services:
app:
image: myapp:latest
ports:
- "8080:8080"
stage('Deploy') {
steps {
sh '''
docker-compose down
docker-compose up -d
'''
}
}
适用场景:
kubectl 或 Helm 更新 Deploymentstage('Deploy to K8s') {
steps {
sh '''
kubectl set image deployment/myapp \
myapp=registry.example.com/myapp:latest
'''
}
}
sudo 不推荐docker rm -f| 场景 | 推荐方式 |
|---|---|
| 学习 / 测试 | Docker Run |
| 小项目 | Docker Compose |
| 企业生产 | Jenkins + K8s |
如果你愿意,我可以:
你现在是打算部署到单台服务器还是 K8s?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。