在本節中,我們將專注於將 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-ized 的應用程式的連線,並且可以看到日誌檔案正在列印到終端上。
如果我們現在想把這個應用程式部署到 AWS 之類的應用程式上,我們已經大大簡化了這方面的工作。我們可以利用 AWS 的彈性容器服務來部署和執行我們的容器,只需幾個命令。
相反,如果我們想使用谷歌的雲,我們可以將其部署到他們的容器中,而不需要額外的工作!這只是容器化對發展的巨大好處之一。
在這一點上,您可能想知道為什麼我們對 frontend/
應用程式沒有做同樣的事情?原因是我們打算將此前端應用程式部署到 AWS S3 儲存桶之類的應用程式中。
在生產時,我們不需要任何花哨的前端服務,我們只需要能夠可靠地服務於內建前端檔案的東西。
因此,在本節中,我們設法將 Docker 新增到我們的後端應用程式中,以及在繼續開發和部署方面如何使我們(對於開發人員)受益。
本文譯自tutorialedge
本作品採用《CC 協議》,轉載必須註明作者和本文連結