本節完整程式碼: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