摘要:使用自動(dòng)構(gòu)建部署環(huán)境阿里云,宿主機(jī)服務(wù)器安裝,在安全規(guī)則中確認(rèn)端口開啟。完畢后,根據(jù)提示設(shè)置登陸賬戶。至此,完成自動(dòng)化的構(gòu)建和部署。當(dāng)你推送代碼后就會(huì)實(shí)現(xiàn)自動(dòng)構(gòu)建,部署。容器出錯(cuò)的是鏡像構(gòu)建和鏡像運(yùn)行,以及容器間通信的問(wèn)題。
使用Docker+Jenkins自動(dòng)構(gòu)建部署 環(huán)境
阿里云ESC,宿主機(jī)服務(wù)器安裝Docker,在安全規(guī)則中確認(rèn)8080端口開啟。
客戶端mac
運(yùn)行jenkins 運(yùn)行jenkins容器在主機(jī)上創(chuàng)建目錄,并添加讀寫權(quán)限以便jenkins應(yīng)用運(yùn)行時(shí)讀寫文件,如:
$ mkdir -p /var/jenkins_node $ chmod 777 /var/jenkins_node
拉取jenkins鏡像:docker pull jenkins,當(dāng)前是2.60.3版。并運(yùn)行:
docker run -d --name myjenkins -p 8080:8080 -p 50000:50000 -v:/var/jenkins_home jenkins
將之前的目錄掛載為數(shù)據(jù)卷。
等待幾十秒,查看jenkins_node目錄,確認(rèn)是否有jenkins應(yīng)用生成的文件。
通過(guò)http://you_host:8080登陸查看。是否出現(xiàn)Getting Started界面。
在Getting Started界面會(huì)需要初始的密碼Unlock Jenkins。
密碼會(huì)在輸出終端,也可根據(jù)頁(yè)面提示到容器的jenkins_home中查找。
所以你可以
docker logs myjenkins # 或者進(jìn)入容器 docker exec -t myjenkins /bin/bash
有了密碼,輸入后安裝建議的插件。
完畢后,根據(jù)提示設(shè)置登陸賬戶。
首頁(yè) -> 點(diǎn)擊系統(tǒng)管理 -> 管理插件 ->可選插件 -> 過(guò)濾:ssh -> 選擇Publish Over SSH插件,點(diǎn)擊直接安裝。
首先在容器中生成rsa密鑰:
# 從宿主機(jī)客戶進(jìn)入容器,目前容器名myjenkins,也可通過(guò)docker ps 查看 $ docker exec -it myjenkins /bin/bash # 進(jìn)入容器后建立.ssh目錄,創(chuàng)建密鑰文件私鑰id_rsa,公鑰id_rsa.pub ~ mkdir ~/.ssh && cd ~/.ssh ~ ssh-keygen -t rsa # 一直回車即可
添加公鑰到宿主機(jī)
將id_rsa.pub中字符串添加到authorized_keys文件末尾,重啟ssh服務(wù)sudo service ssh restart
注意宿主機(jī)是否開啟ssh服務(wù)。
可以在容器終端中使用下面的命令添加到宿主機(jī)中。也可手動(dòng)復(fù)制id_rsa.pub到宿主機(jī)的.ssh/authorized_keys文件中。
ssh-copy-id -i ~/.ssh/id_rsa.pub@
需要修改目標(biāo)服務(wù)器的ssh配置文件,配置文件為/etc/ssh/sshd_config。設(shè)置ssh-server允許使用私鑰和公鑰對(duì)的方式登錄,然后使用sudo /etc/init.d/ssh restart命令重啟ssh服務(wù)。
添加私鑰
jenkins首頁(yè),系統(tǒng)管理 -> 系統(tǒng)設(shè)置 -> 下拉,找到Publish over SSH,填寫Key 和 SSH Server -> 保存
?
高級(jí)選項(xiàng)能夠配置ssh服務(wù)器端口和超時(shí)。Test可測(cè)試,顯示success配置成功。
項(xiàng)目配置首先,新建一個(gè)任務(wù)。填寫項(xiàng)目名稱。
選擇源碼管理為:Git,填寫項(xiàng)目庫(kù)的URL。私有項(xiàng)目需要添加Git賬號(hào)。
?
構(gòu)建環(huán)境:選擇Send files or execute commands over SSH after the build runs,選擇服務(wù)器,以及添加Exec command。保存。
?
# 根據(jù)你的項(xiàng)目需要編寫 sudo docker stop|| true && sudo docker rm || true && cd /var/jenkins_node/workspace/ && sudo docker build --rm --no-cache=true -t - < Dockerfile && sudo docker run -d --name -p 3000:3000 -v /var/jenkins_node/workspace/node:/home/project
端口設(shè)置的3000,也可以另行設(shè)置-p 宿主機(jī)端口:容器端口,記得確認(rèn)服務(wù)器端口權(quán)限是否開啟。
Dockerfile
# 根據(jù)你的項(xiàng)目需要編寫 FROM node RUN mkdir -p /var/www/html/ RUN npm install -g yarn WORKDIR /var/www/html EXPOSE 3000 CMD ["npm","start"]
ps: npm install -g cnpm --registry=https://registry.npm.taobao.org
返回首頁(yè),選擇項(xiàng)目,立即構(gòu)建。成功后可以通過(guò)http://you_host:3000端口查看項(xiàng)目。
配置webhook配置webhook,實(shí)現(xiàn)自動(dòng)部署
獲取API tonken:首頁(yè) -> 用戶 -> 選擇當(dāng)前的用戶 -> 設(shè)置 -> 在API Tonken 項(xiàng)中點(diǎn)擊Show API Token...
?
添加令牌:返回首頁(yè) -> 項(xiàng)目 -> 配置 -> 構(gòu)建觸發(fā)器 -> 選擇 "觸發(fā)遠(yuǎn)程構(gòu)建" ->粘貼"API Token"內(nèi)容到"身份驗(yàn)證令牌"
登陸代碼托管平臺(tái),找到你的項(xiàng)目,選擇管理,選擇webhook,添加URL,格式http://
首頁(yè) -> 系統(tǒng)管理 -> Configure Global Security ->
授權(quán)策略,勾選Allow anonymous read access。
?
至此,完成自動(dòng)化的構(gòu)建和部署。當(dāng)你推送代碼后就會(huì)實(shí)現(xiàn)自動(dòng)構(gòu)建,部署。
部署錯(cuò)誤查找代碼推送和webhook的問(wèn)題不大,照著例子寫不會(huì)出錯(cuò)。
容器出錯(cuò)的是鏡像構(gòu)建和鏡像運(yùn)行,以及容器間通信的問(wèn)題。
鏡像構(gòu)建:查看jenkins主頁(yè)-->查看項(xiàng)目-->最近一次的構(gòu)建歷史-->查看Console Output,查看控制臺(tái)輸出。這里可以看到是哪一步出錯(cuò)。一般Sending build context to Docker daemon之前是jenkins命令問(wèn)題,之后是Dockerfile問(wèn)題。
鏡像運(yùn)行:如果Console顯示鏡像構(gòu)建成功(也可docker images查看),但運(yùn)行失敗,或容器運(yùn)行后退出,如果代碼本地運(yùn)行良好,一般是CMD啟動(dòng)命令錯(cuò)誤,前臺(tái)運(yùn)行一下容器,docker run -it --name
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/27204.html
摘要:如果還沒有搭建好可以使用的,請(qǐng)先移步到這篇文章進(jìn)行搭建使用自動(dòng)部署服務(wù)一搭建篇目標(biāo)通過(guò)實(shí)現(xiàn)推送代碼后自動(dòng)部署基于的服務(wù)準(zhǔn)備工作獲取示例項(xiàng)目或者直接復(fù)制以下文件內(nèi)容獲取示例項(xiàng)目項(xiàng)目文件頁(yè)面文件鏡像文件部署文件部署腳本文件頁(yè)面文件項(xiàng)目很簡(jiǎn)單, 如果還沒有搭建好可以使用 Docker 的 Jenkins,請(qǐng)先移步到這篇文章進(jìn)行搭建 使用 Jenkins 自動(dòng)部署 Docker 服務(wù)(一、Je...
摘要:在本教程中,我們將使用在上部署和伸縮。它主要用來(lái)幫助操作人員部署伸縮更新和維護(hù)服務(wù),以及提供服務(wù)發(fā)現(xiàn)機(jī)制來(lái)管理節(jié)點(diǎn)集群上的容器化應(yīng)用程序。代理則使用,網(wǎng)絡(luò)啟動(dòng)協(xié)議啟動(dòng),因此容器能夠在啟動(dòng)和運(yùn)行之后自動(dòng)連接到。賬戶我們將在上部署集群。 在本教程中,我們將使用Rancher在Kubernetes上部署和伸縮Jenkins。按照本文的步驟一步步來(lái),你將會(huì)使用到我們用來(lái)測(cè)試實(shí)際構(gòu)建作業(yè)的mas...
摘要:自動(dòng)部署基礎(chǔ)實(shí)踐熟悉的基本操作實(shí)現(xiàn)本地后自動(dòng)構(gòu)建部署服務(wù)此實(shí)踐用于優(yōu)化自己在實(shí)際工作中的工作流在本地開發(fā)到服務(wù)器登錄云服務(wù)器或者簡(jiǎn)化流程后本地開發(fā)云服務(wù)器自動(dòng)構(gòu)建部署本實(shí)踐將結(jié)合技術(shù)來(lái)實(shí)現(xiàn)云服務(wù)器對(duì)各種環(huán)境的切換與部署。 Docker + Jenkins + webhooks 自動(dòng)部署基礎(chǔ)實(shí)踐 熟悉 jenkins 的基本操作 ?? 實(shí)現(xiàn)本地 git push 后 jenkins 自...
摘要:集群環(huán)境的部署方式使用集群管理工具通過(guò)版本新增文件實(shí)現(xiàn)滾動(dòng)升級(jí)容器等同于應(yīng)用的部署 1. 思路&流程 Jenkins集成Docker鏡像實(shí)現(xiàn)自動(dòng)發(fā)布與Jenkins發(fā)布mavne項(xiàng)目思路一樣總體流程 為:Jenkins 拉去遠(yuǎn)端源碼 —— gitl實(shí)現(xiàn)應(yīng)用打包 —— jenkins本地把應(yīng)用程序打包進(jìn)Docker鏡像 ...
摘要:從到到的部署經(jīng)驗(yàn)工作中,除了開發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。同時(shí)在構(gòu)建成功后執(zhí)行我們輸入的命令,來(lái)達(dá)到自動(dòng)化部署的工作。缺點(diǎn)也是有的,很難保證對(duì)方部署的環(huán)境是最新的。 從Docker 到Jenkins 到Ansible的部署經(jīng)驗(yàn) 工作中,除了開發(fā)功能,還負(fù)責(zé)系統(tǒng)的部署工作。我從頻繁的部署工作中,逐漸找到了一些偷懶的方法。從傳統(tǒng)的Java ...
閱讀 2376·2021-11-24 09:39
閱讀 2941·2021-07-29 13:49
閱讀 2426·2019-08-29 14:15
閱讀 2321·2019-08-29 12:40
閱讀 3379·2019-08-26 13:42
閱讀 720·2019-08-26 12:13
閱讀 2140·2019-08-26 11:41
閱讀 3425·2019-08-23 18:32