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