前期準備:
docker安裝看這篇:centos7安裝docker及docker常用命令
jenkins安裝看這篇: centos7 Jenkins 安裝與卸載 建議選擇 docker安裝Jenkins
一、項目文件介紹
# 項目文件
├── /home/www/jenkins/front # 項目文件(把vue項目文件放裏面)
├── /home/www/jenkins/node-v10.15.1-linux-x64.tar.gz # nodejs安裝包
├── /home/www/jenkins/Dockerfile # 鏡像文件
├── /home/www/jenkins/docker-compose.src.yml # Docker 部署文件
├── /home/www/jenkins/deploy_jenkins.sh # 部署腳本
├── /home/www/jenkins/Jenkinsfile # Jenkins Pipeline 文件
├── /home/www/jenkins/default.conf # nginx配置文件
#修改權限
chmod -R 755 /home/www/jenkins/*
# 倉庫地址:ssh://[email protected]:29418/www/jenkins.git
# 在git創建倉庫,並把/home/www/jenkins下的內容上傳到git
cd /home/www/jenkins
git init
git remote add origin ssh://[email protected]:29418/www/jenkins.git
git add .
git commit -m 'first commit'
git push -u origin master
default.conf
server {
listen 80;
#listen 443;
server_name localhost;
#ssl_certificate mycert.crt;
#ssl_certificate_key mycert.key;
#charset koi8-r;
#access_log logs/admin.access.log main;
location / {
#前端vue服務端口3000
proxy_pass http://localhost:3000;
}
location ~ asset
{
#後端代碼已經部署在81端口下,所以靜態資源目錄asset,反向代理到81
expires 30d;
proxy_pass http://10.1.1.198:81;
}
}
Dockerfile
FROM nginx
ENV REFRESHED_AT 2019-03-08
RUN mkdir -p /home/front
#WORKDIR 相當於cd
WORKDIR /home/front
#把編譯的文件拷貝到容器中,並自動解壓
ADD front /home/front
#把修改好的nginx配置文件拷貝到容器裏面
COPY default.conf /etc/nginx/conf.d/default.conf
#ADD 文件放在當前目錄下,拷過去會自動解壓
ADD node-v10.15.1-linux-x64.tar.gz /home
RUN ln -s /home/node-v10.15.1-linux-x64/bin/node /usr/bin/node && ln -s /home/node-v10.15.1-linux-x64/bin/npm /usr/bin/npm
#安裝依賴包,如果你項目中已經存在node_modules依賴包這項可以註釋掉
#RUN npm install
#編譯
RUN npm build
RUN ln -s /home/front/node_modules/pm2/bin/pm2 /usr/bin/pm2
EXPOSE 91
STOPSIGNAL SIGTERM
CMD npm start && pm2 restart all && nginx -g "daemon off;"
docker-compose.src.yml
version: '3.4'
services:
jenkins_demo:
image: IMAGE_LATEST
deploy:
restart_policy:
condition: on-failure
#expose:
# - "91"
ports:
- 91:80
restart: always
environment:
TZ: Asia/Shanghai
volumes:
- ./front:/home/front
deploy_jenkins.sh
#!/bin/bash
# 容器名稱
CONTAINER="jenkins_demo"
# 鏡像名稱(以日期時間爲鏡像標籤,防止重複)
IMAGE=$CONTAINER":"$(date -d "today" +"%Y%m%d_%H%M%S")
# 刪除滾動更新殘留的容器
docker rm `docker ps -a | grep -w $CONTAINER"_"$CONTAINER | awk '{print $1}'`
# 強制刪除滾動更新殘留的鏡像
docker rmi --force `docker images | grep -w $CONTAINER | awk '{print $3}'`
# 創建新鏡像
docker build -t $IMAGE . && \
# 刪除 docker-compose.jenkins.yml 文件,防止使用相同鏡像
rm -rf docker-compose.jenkins.yml && \
# 複製 docker-compose.src.yml 文件,防止污染原文件
cp docker-compose.src.yml docker-compose.jenkins.yml && \
# 替換鏡像名標誌位爲最新鏡像
sed -i s%IMAGE_LATEST%$IMAGE%g docker-compose.jenkins.yml && \
# 使用 docker stack 啓動服務
docker stack deploy -c docker-compose.jenkins.yml $CONTAINER
Jenkinsfile
pipeline {
agent none
stages {
stage('Deploy') {
agent any
steps {
echo 'Deploying'
sh './deploy_jenkins.sh'
}
}
}
}
二、手動部署腳本--查看是否正常
cd /home/www/jenkins
./deploy_jenkins.sh
看到如圖基本就部署完成了。
查看容器啓動成功
docker ps
然後訪問 http://10.1.1.198:91/就可以看直接的項目了
三、配置jenkins
1、jenkins安裝看這篇 centos7 Jenkins 安裝與卸載 建議選擇 docker安裝Jenkins
2、新建項目,選擇流水線--》然後點擊下面 確定 按鈕
3、設置,如果出現如下錯誤,是因爲沒有添加ssh證書。
4、解決報錯
報錯信息:
Failed to connect to repository : Command "git ls-remote -h ssh://[email protected]:29418/dahuasecurity/jenkins.git HEAD" returned status code 128:
stdout:
stderr: Password authentication
Password authentication
Password authentication
Permission denied, please try again.
Permission denied, please try again.
[email protected]: Permission denied (password,keyboard-interactive,publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解決方法:
查看容器 找到 jenkins 容器id或者名稱
docker ps
進入容器:
docker exec -it jenkins /bin/bash
然後執行:
git ls-remote -h ssh://[email protected]:29418/dahuasecurity/jenkins.git HEAD
然後:
cd ~/.ssh
ls
查看到目錄下有 known_hosts 文件,然後
cat known_hosts
查看裏面內容:
[10.1.0.37]:29418 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCi9OLXNPseWcwvBOPXpV4cCOgCc6/Rc2kTRnu6jW0iwfgm69sHEMc1iHvxIsmonntm4P4VQrz3jlU4q+2Uk6FrsQPYpYbKoLJ74vWWQOys3h1gWcshFHo49vnhZqBdvhRmsiwNYxLWo+AqQGjEJ68eXf6rKUKlLLE79ZuiOFJKLNikl00sBbbL4PV2HEDaQ42VMu8zXGAFF2xrIGcNVc1mNdL7vvdmKrR0W/e3dJlSgSGLlzYSoTVtqu0ZYztfZEFcVE62bF4ryCiCLkoM88weYGbO9avDwooTXyg7j4Z8QfgpJJOPTKvb2PCVwKWzzEYdqBbJjuquqgxwrF7KlFuj
然後把回到頁面,點擊Add
然後把祕鑰和用戶名,密碼填入保存。
最後:
然後點擊最底部的 Save 按鈕保存。就設置完成了。