1. 程式人生 > >Docker教程二之基於Centos7的NodeJS環境映象

Docker教程二之基於Centos7的NodeJS環境映象

上一章我完成了第一個系統映象,這一章我需要來編寫一個基於CentOS 7的NodeJs環境映象

有NodeJS 基礎的都找到NodeJS 是執行在伺服器的web輕量級框架,併發高,運轉快,對於開發者而言,簡單,方便,這裡就不說明NodeJs的基礎了,自行百度即可

乾貨,直接上 dockerfile 

From centos:7
MAINTAINER xxxxxxx [email protected]

ADD node-v8.9.0-linux-x64.tar.xz /usr/local
RUN mv /usr/local/node-v8.9.0-linux-x64 /usr/local/node
ENV PATH $PATH:/usr/local/node/bin 
WORKDIR /app
EXPOSE 80 443 43554 3000 8888
CMD ["npm" , "start"]

解釋:

From 引用CentOS 7 的基礎映象(上一章編譯而來)

ADD node-v8.9.0-linux-x64.tar.xz /usr/local 新增並解壓檔案到指定目錄

RUN mv /usr/local/node-v8.9.0-linux-x64 /usr/local/node 執行修改名稱命令,RUN實在dockerfile 中用於執行某條指令碼的命令

ENV PATH $PATH:/usr/local/node/bin  設定NodeJs的環境變數,ENV 專用來設定環境變數的

CMD ["/bin/bash"] 這句話是用來執行命令的,比如我要做的某件事,這裡要注意,CMD是一個Dockerfile中只能有一條CMD命令,多條則只執行最後一條CMD,所以使用時注意


WORKDIR /app 建立資料夾並且進入到該目錄下

EXPOSE 80 443 43554 3000 8888 開放埠,按個人要求,NodeJs 中 express 框架預設埠一般為 3000,我同時開通了8888 埠,有程式決定

CMD ["npm" , "start"] 執行啟動,這裡說明下,通過上面WORKDIR  命令,我已經進入/app 目錄資料夾下,所以我們在這裡可以執行命令,因為 /app 目錄為我的程式存放目錄,再一個問題,[]中寫入2個命令 ,因為在執行過程中,是以”/bin/sh -c”的方法執行的,所以最好寫成 一次一個命令的方式

編譯: docker build --rm -t nodejs:8.9 . 

最後的啟動

docker run -d -p 8890:8888 -v /root/blog:/app --restart=always --name blog2 nodejs:8.9

其中/app 是node映象中 web 的專案地址,將本地的web專案資料夾掛載到映象中去, 在啟動容器時,npm start命令會執行 node 專案

對於dockerfile 中的指令, 具體再上面的教程基礎中去檢視吧

可以看我的碼雲:去碼雲看看

第二章,到此結束