node項目自動化部署--基於Jenkins,Docker,Github(3)自動化部署

GitHub倉庫

因爲如今的代碼基本上都是多人合做開發,因此確定會用到像 git 這樣的版本控制工具node

因此這裏使用 GitHub 來作一個演示git

 

首先咱們須要在github上新建一個倉庫github

點擊New來新建一個倉庫web

輸入一個名字docker

以及描述後點擊 createexpress

而後將代碼上傳到GitHub上npm

這裏我上傳的是一個簡單的 hello world 的demojson

到這裏要部署的代碼就準備完成了,接下來須要編寫 Dockerfile 來告訴 docker 該怎麼打包咱們的項目安全

 

Dockerfile編寫

首先咱們在項目的根目錄下添加一個 Dockerfile 文件服務器

該文件代碼以下:

FROM node:alpine
MAINTAINER luohaoyu0920@foxmail.com
ENV TZ = Asia/Shanghai

#將代碼移動到容器中的 /ndoe 路徑下
COPY . /node

#指定工做目錄
WORKDIR /node

#安裝PM2
RUN npm install pm2 -g

#指定時區
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

#暴露容器的3000端口
EXPOSE 3000

#啓動服務
CMD [ "pm2-runtime", "npm", "--", "start" ]

這裏須要注意,最好在 package.json中完成依賴的安裝,否則路徑上極可能出現問題

完整項目代碼:https://github.com/lhy2813419591/JenkinsTest

 

上述代碼中 Expose 暴露的端口就是你的項目監聽的端口

至於時區的設置根據你們的需求本身決定是否設置

 

這裏我是使用了 在鏡像中 使用 pm2 來託管個人項目

雖然docker能夠給咱們一個相對獨立的環境,但平滑啓動等功能並不提供,因此這裏我使用了 pm2 來啓動項目

 

Jenkins構建

剛纔初步的準備工做已經完成了

接下來就須要建立 Jenkins 的構建任務

 

這裏輸入構建任務的名稱

選擇自由風格的項目,而後點擊肯定進入下一步

而後勾選限制項目運行的節點

輸入你但願該構建運行的服務器節點(在以前 over publish中添加的服務器)

輸入事後會告訴你選中了幾個節點

而後就是源碼管理選擇 git

沒有憑據的須要先添加憑據

而後設置構建觸發器,這裏若是須要當git上面有新的 push 的時候就自動構建

則須要設置構建出發器,不須要的小夥伴能夠自行跳過

身份驗證令牌設置以下:

  jenkins --> 首頁 --> 用戶

設置 --> 點擊 "show API Token"

這樣就獲取了一個 Api Token 將其複製到身份驗證令牌處便可

 

設置完身份驗證令牌後咱們須要進入 github進行相關設置

進入setting 後選擇 webhook

 

 而後添加 webhook

 

這裏的url在 Jenkins 上能夠看到

 

這個路徑複製到github

 若是出現403則須要設置一下用戶權限

在全局安全設置中容許匿名用戶操做

我這裏爲了方便就直接設置爲全部用戶能夠作任何事

而後回到github

點擊redeliver

 

而後看到201就說明配置完成了

 

這樣咱們就只差最後的執行腳本了

咱們回到 Jenkins 繼續進行設置

接下來要設置的是構建環境

這裏須要填寫的實際上只用填寫遠程工做目錄以及構建完成後執行的命令行語句

cd /root/jenkins/workspace/JenkinsTest #訪問指定的遠程工做目錄
sudo docker stop node #中止名爲node的容器
sudo docker rm node #移除名爲node的容器
sudo docker rmi node #移除名爲node的鏡像
sudo docker build --rm --no-cache=true  --tag node /root/jenkins/workspace/JenkinsTest #build鏡像,並命名爲node
sudo docker run -dit  --name node -p 9001:3000 -v /root/jenkins/workspace/JenkinsTest:/node node #運行名爲node的鏡像,將容器的3000端口映射到9001端口

以下圖所示

保存後點擊當即構建便可執行,不須要push來觸發

而後訪問部署節點的 9001 端口就能訪問自動構建的 express 項目

若是步驟沒有問題,但沒法訪問項目建議前往服務器的控制檯查看安全組規則,開放對應的端口

查看項目的日誌信息

docker logs node #node是容器的name

 

完整代碼:https://github.com/lhy2813419591/JenkinsTest

相關文章
相關標籤/搜索