因爲如今的代碼基本上都是多人合做開發,因此確定會用到像 git 這樣的版本控制工具node
因此這裏使用 GitHub 來作一個演示git
首先咱們須要在github上新建一個倉庫github
點擊New來新建一個倉庫web
輸入一個名字docker
以及描述後點擊 createexpress
而後將代碼上傳到GitHub上npm
這裏我上傳的是一個簡單的 hello world 的demojson
到這裏要部署的代碼就準備完成了,接下來須要編寫 Dockerfile 來告訴 docker 該怎麼打包咱們的項目安全
首先咱們在項目的根目錄下添加一個 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 的構建任務
這裏輸入構建任務的名稱
選擇自由風格的項目,而後點擊肯定進入下一步
而後勾選限制項目運行的節點
輸入你但願該構建運行的服務器節點(在以前 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