1. 使用 Go 和 ReactJS 構(gòu)建聊天系統(tǒng)(六):Docker 部署

        共 2392字,需瀏覽 5分鐘

         ·

        2021-01-18 10:00

        點(diǎn)擊上方藍(lán)色“Go語言中文網(wǎng)”關(guān)注,每天一起學(xué) Go

        本節(jié)完整代碼:GitHub[1]

        本文是關(guān)于使用 ReactJS 和 Go 構(gòu)建聊天應(yīng)用程序的系列文章的第 6 部分。你可以在這里找到第 5 部分 - 優(yōu)化前端[2]

        在本節(jié)中,我們將專注于將 Docker 添加到后端應(yīng)用程序中。

        為什么要這么做呢?在我們研究諸如身份驗(yàn)證,負(fù)載均衡和部署之類的問題前,使用容器技術(shù)部署應(yīng)用程序是個標(biāo)準(zhǔn)的做法。

        為什么用 Docker

        如果這是你第一次聽說 Docker 容器化技術(shù),那么你可能會質(zhì)疑使用它的原因。

        對我來說,其中一個主要原因是它讓部署變得更加容易。你可以將基于 docker 的應(yīng)用程序部署到支持 Docker 的任何服務(wù)器或平臺。

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

        不僅如此,它還解決了 “在我的機(jī)器上運(yùn)行好好的” 這個問題,因?yàn)樵谀愕?Dockerfile 中,可以指定應(yīng)用程序啟動時所需的確定環(huán)境。

        開始

        首先我們得在計算機(jī)上安裝 Docker??梢詤⒖迹?span style="font-weight: bold;color: #ff3502;">Docker 指南[3]

        在安裝了 docker 并讓它運(yùn)行后,我們就可以創(chuàng)建 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 構(gòu)建 Docker 鏡像:

        注意 - 如果你的網(wǎng)速比較差,下一個命令可能需要等待一段時間才能執(zhí)行,但是,由于有緩存后續(xù)命令會快得多。

        $?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

        正如你所見,在運(yùn)行此命令并刷新客戶端后,可以看到現(xiàn)在已經(jīng)連接到 Docker 化的應(yīng)用服務(wù),也可以看到終端正在打印日志。

        如果現(xiàn)在想要將此應(yīng)用程序部署到 AWS 上,這會大大簡化一些過程?,F(xiàn)在可以利用 AWS 的 ECS 服務(wù)的一些命令來部署和運(yùn)行我們的容器。

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

        前端為什么不使用 Docker

        在這一點(diǎn)上,你可能想知道為什么不對 frontend/ 應(yīng)用程序做同樣的事情?原因是我們打算將前端應(yīng)用部署到 AWS S3 服務(wù)。

        當(dāng)部署上線時,前端不需要任何花哨的服務(wù),我們只需要能夠可靠地提供構(gòu)建的前端文件。

        總結(jié)

        因此,在本節(jié)中,我們設(shè)法將 Docker 添加到后端應(yīng)用程序中,這對持續(xù)開發(fā)和部署的人員有益。


        via: https://tutorialedge.net/projects/chat-system-in-go-and-react/part-6-dockerizing-your-backend/

        作者:Elliot Forbes[4]譯者:-。了;‘’[5]校對:polaris1119[6]

        本文由 GCTT[7] 原創(chuàng)編譯,Go 中文網(wǎng)[8] 榮譽(yù)推出

        參考資料

        [1]

        GitHub: https://github.com/watermelo/realtime-chat-go-react/tree/part-6

        [2]

        優(yōu)化前端: https://studygolang.com/articles/22433

        [3]

        Docker 指南: https://www.docker.com/get-started

        [4]

        Elliot Forbes: https://twitter.com/elliot_f

        [5]

        咔嘰咔嘰: https://github.com/watermelo

        [6]

        polaris1119: https://github.com/polaris1119

        [7]

        GCTT: https://github.com/studygolang/GCTT

        [8]

        Go 中文網(wǎng): https://studygolang.com/



        推薦閱讀


        福利

        我為大家整理了一份從入門到進(jìn)階的Go學(xué)習(xí)資料禮包,包含學(xué)習(xí)建議:入門看什么,進(jìn)階看什么。關(guān)注公眾號 「polarisxu」,回復(fù) ebook 獲取;還可以回復(fù)「進(jìn)群」,和數(shù)萬 Gopher 交流學(xué)習(xí)。

        瀏覽 66
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報
          
          

            1. 久久亚洲综合国产精品99麻豆的功能介绍 | 爆操网站 | 2020亚洲天堂 | 久久99精品久久久久久园产越南 | 青青草A片 |