[譯] 使用 Go 和 ReactJS 構建聊天系統 (六)

咔嘰咔嘰發表於2019-08-02

本節完整程式碼:GitHub

本文是關於使用 ReactJS 和 Go 構建聊天應用程式的系列文章的第 6 部分。你可以在這裡找到第 5 部分 - 優化前端

在本節中,我們將專注於將 Docker 新增到後端應用程式中。

為什麼要這麼做呢?在我們研究諸如身份驗證,負載均衡和部署之類的問題前,使用容器技術部署應用程式是個標準的做法。

為什麼用 Docker

如果這是你第一次聽說 Docker 容器化技術,那麼你可能會質疑使用它的原因。

對我來說,其中一個主要原因是它讓部署變得更加容易。你可以將基於 docker 的應用程式部署到支援 Docker 的任何伺服器或平臺。

這意味著,無論你在何處部署,都可以使用簡單的命令啟動應用程式。

不僅如此,它還解決了 “在我的機器上執行好好的” 這個問題,因為在你的 Dockerfile 中,可以指定應用程式啟動時所需的確定環境。

開始

首先我們得在計算機上安裝 Docker。可以參考:Docker 指南

在安裝了 docker 並讓它執行後,我們就可以建立 Dockerfile 了:

FROM golang:1.11.1-alpine3.8
RUN mkdir /app
ADD . /app/
WORKDIR /app
RUN go mod download
RUN go build -o main ./...
CMD ["/app/main"]
複製程式碼

我們定義了 Dockerfile 檔案之後,就可以使用 docker cli 構建 Docker 映象:

注意 - 如果你的網速比較差,下一個命令可能需要等待一段時間才能執行,但是,由於有快取後續命令會快得多。

$ docker build -t backend .
Sending build context to Docker daemon  11.26kB
Step 1/8 : FROM golang:1.11.1-alpine3.8
 ---> 95ec94706ff6
Step 2/8 : RUN apk add bash ca-certificates git gcc g++ libc-dev
 ---> Running in 763630b369ca
 ...
複製程式碼

成功完成 build 步驟後,我們可以將該容器啟動起來:

$ docker run -it -p 8080:8080 backend
Distributed Chat App v0.01
WebSocket Endpoint Hit
Size of Connection Pool:  1
&{ 0xc000124000 0xc0000902a0 {0 0}}
Message Received: {Type:1 Body:test}
Sending message to all clients in Pool
複製程式碼

正如你所見,在執行此命令並重新整理客戶端後,可以看到現在已經連線到 Docker 化的應用服務,也可以看到終端正在列印日誌。

如果現在想要將此應用程式部署到 AWS 上,這會大大簡化一些過程。現在可以利用 AWS 的 ECS 服務的一些命令來部署和執行我們的容器。

同樣的,如果想要使用 Google 雲,我們可以將其部署到 Google 的容器產品中,無需額外的工作!這只是突出 Docker 化的巨大好處之一。

前端為什麼不使用 Docker

在這一點上,你可能想知道為什麼不對 frontend/ 應用程式做同樣的事情?原因是我們打算將前端應用部署到 AWS S3 服務。

當部署上線時,前端不需要任何花哨的服務,我們只需要能夠可靠地提供構建的前端檔案。

總結

因此,在本節中,我們設法將 Docker 新增到後端應用程式中,這對持續開發和部署的人員有益。


原文:tutorialedge.net/projects/ch…

作者:Elliot Forbes 譯者:咔嘰咔嘰 校對:polaris1119

本文由 GCTT 原創編譯,Go 中文網 榮譽推出

[譯] 使用 Go 和 ReactJS 構建聊天系統 (六)

相關文章