中文字幕 日本 在线 高清,久久精品国产99精品国,超碰人人香蕉,一区二区三区无码高清视频

在 GoLang 中使用 Docker Compose 運(yùn)行 Go 應(yīng)用程序(golang dockerfile)

點(diǎn)擊上方藍(lán)色“Go語(yǔ)言中文網(wǎng)”關(guān)注我們,領(lǐng)全套Go資料,每天學(xué)習(xí) Go 語(yǔ)言

今天,我們將繼續(xù)有關(guān)如何使用 Docker 運(yùn)行調(diào)試 Go 應(yīng)用程序的系列文章。

在本文中,我們將使用 Docker Compose 運(yùn)行和調(diào)試我們的應(yīng)用程序。對(duì)于本文,我們將使用此處的源代碼[1],在開始之前切換到 compose 分支[2]。

使用 Docker Compose 運(yùn)行 Go 應(yīng)用程序

讓我們從使用 Docker Compose 運(yùn)行應(yīng)用程序開始。

查看我們已經(jīng)創(chuàng)建的項(xiàng)目,可以在代碼倉(cāng)庫(kù)中找到 docker-compose.yaml 文件:

version: "3.5"services:  web:    container_name: dockerdev    build: ./    ports:      - "8000:8000"    environment:      DD_DB_HOST: db    command: /server    depends_on:      - db  db:    container_name: dockerdev-db    image: postgres:12.2-alpine    ports:      - "5432:5432"    environment:      POSTGRES_USER: goland      POSTGRES_PASSWORD: goland      POSTGRES_DB: goland    volumes:      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

在數(shù)據(jù)庫(kù)部分,我們需要?jiǎng)?chuàng)建一個(gè)名為 init.sql 的新文件。該文件的內(nèi)容用于設(shè)置服務(wù)運(yùn)行所需的數(shù)據(jù)庫(kù)。

最后,讓我們?cè)?main.go 文件中運(yùn)行 Sync packages of <project> 來(lái) quick-fix,以下載 pgx[3] 庫(kù)并運(yùn)行該應(yīng)用程序。注意:如果你的模塊緩存中還沒(méi)有 pgx 的 4.5.0 版本,則需要執(zhí)行此步驟。

運(yùn)行基于 Docker Compose 的應(yīng)用程序類似于其他 Run Configurations。單擊 docker-compose.yaml 中 services 指令旁邊的雙綠色箭頭按鈕。要僅運(yùn)行一項(xiàng)服務(wù),請(qǐng)點(diǎn)擊要運(yùn)行的服務(wù)類型旁邊的綠色箭頭,例如上面的示例配置中的 web 或 db。

在 GoLang 中使用 Docker Compose 運(yùn)行 Go 應(yīng)用程序(golang dockerfile)

配置運(yùn)行后,在 Docker 節(jié)點(diǎn)下的 Services Tool 窗口中會(huì)有一個(gè)名為 Compose 的新節(jié)點(diǎn)。這里會(huì)顯示正在運(yùn)行的每個(gè) Docker Compose 服務(wù)套件。

可以瀏覽每個(gè)服務(wù)定義,并為每個(gè)服務(wù)顯示所有正在運(yùn)行的實(shí)例。Docker Compose 服務(wù)中可用于容器的信息與常規(guī) Docker 容器可使用的信息相同。

注意:如果你要啟動(dòng)較重的服務(wù)(例如數(shù)據(jù)庫(kù)服務(wù)器),或者這些服務(wù)需要一些初始化時(shí)間,則我們的 Go 程序服務(wù)需要考慮這些服務(wù)的啟動(dòng)時(shí)間。

在我們的示例代碼中,這是使用 getDBConnection 函數(shù)處理的,該函數(shù)嘗試在放棄之前嘗試幾次以指數(shù)退避的方式連接到數(shù)據(jù)庫(kù)。

重啟動(dòng) Docker Compose 服務(wù)

更改我們的代碼后,我們需要重新啟動(dòng)服務(wù)以重新加載這些更改。目前,使用 IDE 重新啟動(dòng)它有點(diǎn)復(fù)雜,因?yàn)檫@樣做需要你執(zhí)行以下步驟:

  • 執(zhí)行 Run | Edit Configurations 并復(fù)制一份現(xiàn)有的 Docker Compose 配置;
  • 編輯新創(chuàng)建的配置以添加重新啟動(dòng)的服務(wù)的名稱,并啟用 –build 選項(xiàng)以強(qiáng)制在運(yùn)行鏡像之前對(duì)其進(jìn)行重建;

完成這些步驟之后,你可以停止現(xiàn)有服務(wù),刪除現(xiàn)有容器,然后啟動(dòng)新創(chuàng)建的配置。(由于該 GIF 太大,微信無(wú)法上傳,可以閱讀原文查看)

在 GoLang 中使用 Docker Compose 運(yùn)行 Go 應(yīng)用程序(golang dockerfile)

Pro tip:你可以使用 “Delete” 功能同時(shí)停止和刪除服務(wù)。

使用 Docker Compose 調(diào)試 Go 應(yīng)用程序

要使用 Docker Compose 調(diào)試應(yīng)用程序,我們需要同時(shí)更改 Dockerfile 和 docker-compose.yaml 文件。我們可以切換到代碼庫(kù)的 compose-debug 分支[4],這樣更容易理解。

現(xiàn)在,docker-compose.yaml 文件如下所示:

version: "3.5"services:  web:    container_name: dockerdev    build: ./    ports:      - "8000:8000"      - "40000:40000"    environment:      DD_DB_HOST: db    security_opt:      - "seccomp:unconfined"    cap_add:      - SYS_PTRACE    command: /dlv --headless --listen=:40000 --api-version=2 exec /server    depends_on:      - db  db:    container_name: dockerdev-db    image: postgres:12.2-alpine    ports:      - "5432:5432"    environment:      POSTGRES_USER: goland      POSTGRES_PASSWORD: goland      POSTGRES_DB: goland    volumes:      - ./init.sql:/docker-entrypoint-initdb.d/init.sql

注意:這里的重要部分是 security_opt 和 cap_add 屬性,因?yàn)樗鼈冊(cè)试S調(diào)試器在 Docker 環(huán)境中運(yùn)行。

運(yùn)行此操作類似于運(yùn)行常規(guī) Docker Compose 配置。我們可以使用 Go Remote 配置連接到容器,調(diào)試器會(huì)話將像調(diào)試常規(guī)配置一樣開始。

在 GoLang 中使用 Docker Compose 運(yùn)行 Go 應(yīng)用程序(golang dockerfile)

今天我們的文章到此結(jié)束。我們已經(jīng)討論了如何使用 Docker Compose,以及如何從 GoLand 運(yùn)行和調(diào)試我們的應(yīng)用程序。

在下一篇文章中,我們將介紹如何在 IDE 中使用 Kubernetes,以及如何使用它運(yùn)行和調(diào)試我們的應(yīng)用程序。

原文鏈接:https://blog.jetbrains.com/go/2020/05/08/running-go-applications-using-docker-compose-in-goland/

作者:Florin P??an

翻譯:Go 語(yǔ)言中文網(wǎng) polaris

參考資料

[1]

此處的源代碼: https://github.com/dlsniper/dockerdev/tree/compose

[2]

compose 分支: https://github.com/dlsniper/dockerdev/tree/compose

[3]

pgx: https://github.com/jackc/pgx/

[4]

compose-debug 分支: https://github.com/dlsniper/dockerdev/tree/compose-debug

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除。

(0)
上一篇 2023年4月8日 上午9:23
下一篇 2023年4月8日 上午9:39

相關(guān)推薦

  • 項(xiàng)目 管理進(jìn)度 系統(tǒng)

    項(xiàng)目管理進(jìn)度系統(tǒng):提高項(xiàng)目管理效率 隨著現(xiàn)代商業(yè)競(jìng)爭(zhēng)的不斷加劇,企業(yè)需要更好地管理項(xiàng)目,提高項(xiàng)目的成功率和交付質(zhì)量。然而,傳統(tǒng)的項(xiàng)目管理方式已經(jīng)無(wú)法滿足現(xiàn)代項(xiàng)目管理的需求,因此,開…

    科研百科 2025年1月12日
    2
  • 工程項(xiàng)目管理常用工具

    工程項(xiàng)目管理常用工具 工程項(xiàng)目管理是現(xiàn)代項(xiàng)目管理中非常重要的一個(gè)方面,它涉及到項(xiàng)目計(jì)劃、進(jìn)度控制、成本預(yù)算、風(fēng)險(xiǎn)管理和質(zhì)量管理等方面。在工程項(xiàng)目管理中,常用的工具包括項(xiàng)目管理工具、…

    科研百科 2025年1月8日
    4
  • 數(shù)字化檔案管理系統(tǒng)平臺(tái)

    數(shù)字化檔案管理系統(tǒng)平臺(tái):讓檔案管理更加高效便捷 數(shù)字化檔案管理系統(tǒng)平臺(tái)是一種將傳統(tǒng)檔案管理轉(zhuǎn)化為數(shù)字化形式的工具,它可以幫助檔案管理者更加高效地管理文件,并提供更好的用戶體驗(yàn)。數(shù)字…

    科研百科 2025年1月9日
    3
  • 水利類科研項(xiàng)目

    水利類科研項(xiàng)目: 水資源優(yōu)化配置與可持續(xù)發(fā)展 隨著人口的增長(zhǎng)和經(jīng)濟(jì)的發(fā)展,水資源面臨著越來(lái)越嚴(yán)峻的挑戰(zhàn)。如何在有限的水資源中實(shí)現(xiàn)水資源的合理分配和可持續(xù)發(fā)展成為了一個(gè)備受關(guān)注的問(wèn)題…

    科研百科 2025年2月13日
    1
  • 對(duì)應(yīng)收款項(xiàng)內(nèi)部控制進(jìn)行測(cè)試

    對(duì)應(yīng)收款項(xiàng)內(nèi)部控制進(jìn)行測(cè)試 隨著社會(huì)主義市場(chǎng)經(jīng)濟(jì)的健康發(fā)展,企業(yè)對(duì)內(nèi)部控制的要求越來(lái)越高。對(duì)應(yīng)收款項(xiàng)內(nèi)部控制是其中一個(gè)重要的方面,它關(guān)系到企業(yè)的財(cái)務(wù)狀況、聲譽(yù)和競(jìng)爭(zhēng)力。因此,對(duì)對(duì)應(yīng)…

    科研百科 2024年10月28日
    2
  • 建文項(xiàng)目管理系統(tǒng)

    建文項(xiàng)目管理系統(tǒng): 創(chuàng)新項(xiàng)目管理的利器 隨著現(xiàn)代商業(yè)競(jìng)爭(zhēng)的加劇,企業(yè)需要更加高效地管理其項(xiàng)目,以確保項(xiàng)目按時(shí)、按質(zhì)、按量完成。為了滿足這一需求,企業(yè)開始采用各種項(xiàng)目管理系統(tǒng),以提高…

    科研百科 2024年8月18日
    5
  • 濟(jì)南市“兩新”黨建經(jīng)費(fèi) “怎么花”有了硬杠杠(兩新黨建經(jīng)費(fèi)屬于政府補(bǔ)貼嗎)

    黨建工作經(jīng)費(fèi)是基層黨組織開展工作的基本保障之一,這筆經(jīng)費(fèi)應(yīng)該“花在哪兒”“怎么花”?日前,市委組織部、市財(cái)政局聯(lián)合印發(fā)《濟(jì)南市非公有制經(jīng)濟(jì)組織和社會(huì)組織黨建工作經(jīng)費(fèi)使用管理辦法(試…

    科研百科 2023年7月19日
    271
  • 科研項(xiàng)目激勵(lì)收入

    科研項(xiàng)目激勵(lì)收入:推動(dòng)科技進(jìn)展的關(guān)鍵因素 科研項(xiàng)目激勵(lì)收入是推動(dòng)科技進(jìn)展的關(guān)鍵因素之一。隨著科技的快速發(fā)展,許多公司和個(gè)人都致力于開展科研項(xiàng)目,以推動(dòng)技術(shù)的進(jìn)步和創(chuàng)新。然而,由于科…

    科研百科 2025年3月2日
    2
  • 車輛信息化管理系統(tǒng)專業(yè)版軟件開發(fā)設(shè)計(jì)解決方案(車輛信息化管理系統(tǒng)專業(yè)版軟件開發(fā)設(shè)計(jì)解決方案有哪些)

    “關(guān)注”本賬號(hào)可以獲得更多解決方案,文章最后有驚喜! 解決方案目錄明細(xì): 1. 業(yè)務(wù)明細(xì) 3 1.1 基礎(chǔ)檔案 7 1.1.1 車輛登記 8 1.1.2 人員登記 12 1.1.3…

    2023年4月17日
    212
  • 項(xiàng)目管理工具箱

    項(xiàng)目管理工具箱:讓項(xiàng)目管理更高效 隨著項(xiàng)目的不斷增多,項(xiàng)目經(jīng)理們常常感到項(xiàng)目管理工作變得越來(lái)越復(fù)雜。為了更好地管理項(xiàng)目,他們需要使用各種工具來(lái)幫助他們更高效地完成工作。本文將介紹項(xiàng)…

    科研百科 2024年7月28日
    4