在Debian上集成Docker與CI/CD,可參考以下步驟,以Jenkins和GitLab CI為例:
安裝Docker
sudo apt update && sudo apt install docker.io
sudo systemctl enable --now docker
安裝CI/CD工具
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt install jenkins openjdk-11-jdk
sudo systemctl start jenkins
docker run -d --name gitlab-runner --restart always \
-v /srv/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest
Jenkinsfile
:pipeline {
agent any
environment {
DOCKER_IMAGE = "my-app:${env.BUILD_NUMBER}"
DOCKER_REGISTRY = "docker.io"
DOCKER_CREDENTIALS = credentials('docker-hub-credentials')
}
stages {
stage('Build') {
steps {
sh 'docker build -t $DOCKER_IMAGE .'
}
}
stage('Test') {
steps {
sh 'docker run $DOCKER_IMAGE npm test' // 示例測試命令
}
}
stage('Push') {
steps {
docker.withRegistry("https://$DOCKER_REGISTRY", DOCKER_CREDENTIALS) {
sh "docker push $DOCKER_IMAGE"
}
}
}
stage('Deploy') {
steps {
sh 'ssh user@server "docker pull $DOCKER_IMAGE && docker-compose up -d"'
}
}
}
}
Docker Pipeline
、Git
、SSH
插件,用于拉取代碼、構建鏡像及遠程部署。.gitlab-ci.yml
stages:
- build
- test
- deploy
build:
stage: build
script:
- docker build -t my-app:$CI_COMMIT_SHORT_SHA .
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker push my-app:$CI_COMMIT_SHORT_SHA
test:
stage: test
script:
- docker run my-app:$CI_COMMIT_SHORT_SHA npm test
deploy:
stage: deploy
script:
- ssh user@server "docker pull my-app:$CI_COMMIT_SHORT_SHA && docker-compose up -d"
only:
- main
Docker鏡像構建與推送
docker.build
(Jenkins)或docker build
(GitLab)命令構建鏡像,標簽使用構建編號或Git提交哈希。docker login
和docker push
將鏡像推送到Docker Hub或私有倉庫。自動化部署
docker pull
和docker-compose up -d
實現滾動更新。安全增強
trivy image my-app:$CI_COMMIT_SHORT_SHA
.dockerignore
排除敏感文件,避免構建冗余內容。push
事件)自動觸發構建。以上步驟可根據具體項目需求調整,優先選擇與團隊現有技術棧兼容的工具鏈。