Docker最全教程之使用Node.js搭建團隊技術文檔站(二十三) Docker最全教程——從理論到實戰(一) Docker最全教程——從理論到實戰(二) Docker最全教程——從理論到實戰(三)

原文: Docker最全教程之使用Node.js搭建團隊技術文檔站(二十三)

前言              

各類編程語言均有其優點和生態,有興趣的朋友徹底能夠涉獵多門語言。在日常的工做之中,也能夠嘗試選擇相對適合的編程語言來完成相關的工做。html

在團隊技術文檔站搭建這塊,筆者嘗試了許多框架,最終仍是選擇了Hexo,主要是因爲其豐富的主題和插件,而且靈活和高度可定製化,改起來也很是方便。咱們團隊文檔站即便用Hexo來構建,而且基於容器配置了完整的代碼流水線:docs.xin-lai.com前端

若是對站點配置、主題、插件存在疑問,能夠加羣溝通。node


 目錄

  • 官方鏡像 
  • 編寫一個簡單的Web服務器 
  1. 編碼 
  2. 編寫Dockerfile 
  3. 構建並運行 
  • 使用Hexo搭建團隊技術文檔站 
  1. 安裝 
  2. 初始化 
  3. 配置站點信息 
  4. 生成靜態文件 
  5. 使用hexo-server進行託管 
  6. 使用容器構建和託管 

 Node.js 是一個基於 Chrome V8 引擎構建的JavaScript運行環境,是一個讓JavaScript可以運行在服務端的開發平臺。Node.js能夠方便地搭建響應速度快、易於擴展的Web應用。Node.js 使用事件驅動, 非阻塞I/O模型而得以輕量和高效,很是適合在分佈式設備上運行數據密集型的實時應用。git

Node.js的誕生給前端開發人員帶來了極大的驚喜,傳統的Web 開發者,前端使用JavaScript進行編程,服務器端代碼得用另一種語言,好比Java、.NET、PHP 等等。可是 Node.js 出現以後,前端開發者使用JavaScript就能夠先後端通吃了。web


官方鏡像

官方鏡像地址:https://hub.docker.com/_/nodedocker

 


 編寫一個簡單的Web服務器

1.編碼

使用Node.js編寫一個簡單的Web服務器很是簡單,主要須要用到http模塊,http模塊主要用於搭建 HTTP 服務端和客戶端,所有代碼以下所示:數據庫

// 加載http模塊
const http = require('http');
// 設置端口

const port = 80;

// 建立Web服務器

const server = http.createServer((req, res) => {

// 設置響應的狀態碼

res.statusCode = 200;

// 設置響應的請求頭

res.setHeader('Content-Type', 'text/plain');

// 設置響應輸出文本

res.end('Hello World !');

});

// 設置Web服務器監聽端口

server.listen(port);

 

2.編寫Dockerfile

Dockerfile文件以下所示:npm

#指定node鏡像的版本
FROM node:8.9-alpine

#對外暴露的端口

EXPOSE 80

# 複製文件

COPY . .

# 運行

ENTRYPOINT ["node","app.js"]

 

3.構建並運行

構建命令以下所示:編程

docker build --rm -f "dockerfile" -t nodetest1:latest .

 

運行:後端

docker run --rm -p 4000:80 nodetest1:latest

 

在平常開發中,一些簡單的腳本的編寫,爲了不反覆的構建過程,你們一樣能夠參考PHP一節,而後直接運行Node.js的鏡像來執行Node.js的腳本。

參考腳本以下所示:

docker run -it --rm `

--name node-running-script `

-v D:\temp\node:/usr/src/myapp `

-w /usr/src/myapp `

node:8.9-alpine node app.js

使用Hexo搭建團隊技術文檔站

Hexo 是一個快速、簡潔且高效的博客(不只僅是博客)框架,他可使用 Markdown(或其餘渲染引擎)解析文章,在幾秒內,便可利用靚麗的主題生成靜態網頁。咱們能夠用其來搭建博客、文檔站點或者其餘官網。接下來,咱們將使用Hexo來搭建團隊技術文檔站。之因此選擇Hexo,主要緣由以下:

  • 主題豐富

Hexo的主題不少,咱們在官網就能找到不少可用的主題,並且均已開源,以下所示:

 

  • 插件豐富

在官網,咱們就能夠找到不少各類各樣的插件,好比搜索、字數統計、自動分類、百度網址提交、靜態資源壓縮等等各類各樣的開源插件:

 

  • 靈活可擴展

不管是主題仍是插件,均爲開源。相關主題的修改也很是簡單,您只要具有必定的JavaScript和Html的知識,就能夠完成對主題和插件的修改。

  • 支持對Markdown進行渲染

不管是搭建博客仍是技術文檔站,使用Markdown進行文章編寫都是須要優先考慮的。團隊成員僅需提交Markdown,就能夠生成一個漂亮美觀的靜態站點,這是一件多麼愜意的事情啊!

接下來,咱們就演示如何一步一步的使用Hexo來構建團隊技術站點:

1.安裝

在安裝Hexo以前,咱們先必須安裝好如下內容:

接下來,咱們僅需使用如下命令來安裝Hexo:

npm install -g hexo-cli

npm是Node.js的包管理工具,在安裝Node.js時會順帶安裝好,經過以上命令,咱們將使用npm全局安裝(安裝到全局目錄)hexo-cli。

2.初始化

接下來,咱們能夠開始使用Hexo建站了。首先咱們須要進行一些站點初始化的工做:

hexo init <folder>

目錄爲選填,不填則默認當前目錄。

初始化完成以後,就能夠看到目標目錄下多了不少內容:

接下來,咱們使用npm管理工具進行安裝相關包:

npm install

3.配置站點信息

在根目錄下,咱們能夠找到「_config.yml」文件,經過修改該文件,咱們能夠在此配置大部分參數:

 

具體配置信息見官網說明:https://hexo.io/zh-cn/docs/configuration

4.生成靜態文件

默認狀況下,Hexo進行站點初始化時,已經完成了默認主題(landscape)和內容(hello-world.md)的設置,咱們能夠直接執行如下命令來生成靜態文件:

hexo generate

 

執行以後,咱們能夠在「public」目錄看到如下靜態文件:

咱們還可使用命令「hexo deploy」來部署站點,好比部署到GitHub而後使用GitHub進行託管。Hexo支持多種部署方式,具體見官網:https://hexo.io/zh-cn/docs/deployment

5.使用hexo-server進行託管

咱們也可使用官方組件hexo-server進行託管咱們的靜態站點,在使用以前,咱們得先進行安裝:

npm install hexo-server –save

安裝完成後,就可使用如下命令來啓動web服務器來進行查看了:

hexo server -p 5000

-p參數用於指定端口,默認端口爲4000:

接下來,咱們就能夠用瀏覽器直接打開這個地址進行訪問了:

至此,一個簡單的靜態站點就搭建好了。咱們能夠配置導航連接,或者使用主題和插件來支持各類自定義的功能。例如以下所示的站點:

6.使用容器構建和託管

初步瞭解Hexo以後,咱們可使用Docker來構建和託管咱們的站點。主體參考流程以下所示:

以上流程僅供參考,TeamCity的配置請參考DevOps相關章節。

Dockerfile文件以下所示:

FROM node:10.15.3-alpine
# 設置標籤

LABEL author=雪雁 email=xinlai@xin-lai.com site=https://docs.xin-lai.com

# 設置容器內端口

EXPOSE 8000

# 添加目錄

ADD . /app

# 設置當前工做目錄

WORKDIR /app

# 複製文件

COPY . .

# 設置npm而且使用npm安裝hexo以及相關插件,而後生成靜態頁而且安裝hexo-server

RUN npm config set unsafe-perm true && \

npm config set registry https://registry.npm.taobao.org && \

npm install -g hexo-cli && \

# hexo clean && \

cd src && \

npm install hexo --save && \

npm install hexo-neat --save && \

npm install --save hexo-wordcount && \

npm i -S hexo-prism-plugin && \

npm install hexo-generator-search --save && \

npm i hexo-permalink-pinyin --save && \

hexo generate && \

npm install hexo-server --save

# 設置工做目錄

WORKDIR src

# 使用hexo-server託管靜態文件

ENTRYPOINT ["hexo", "server","-p","8000"]

 


 

往期內容連接

Docker最全教程——從理論到實戰(一)

Docker最全教程——從理論到實戰(二)

Docker最全教程——從理論到實戰(三)

Docker最全教程——從理論到實戰(四)

Docker最全教程——從理論到實戰(五)

Docker最全教程——從理論到實戰(六)

Docker最全教程——從理論到實戰(七)

Docker最全教程——從理論到實戰(八)

相關文章
相關標籤/搜索