第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

golang 應用的部署策略,如何在生產(chǎn)環(huán)境中運行 golang 應用

golang 應用的部署策略,如何在生產(chǎn)環(huán)境中運行 golang 應用

Go
眼眸繁星 2022-06-27 15:05:21
我有一個 golang 網(wǎng)絡應用程序,我需要部署它。我正在嘗試找出如何在生產(chǎn)環(huán)境中運行 golang 應用程序的最佳實踐。我現(xiàn)在的做法,很簡單,只需將構建的二進制文件上傳到生產(chǎn)環(huán)境,而實際上根本沒有 prod 上的源代碼。但是我發(fā)現(xiàn)了一個問題,我的源代碼實際上是從源代碼中讀取了一個config/<local/prod>.yml配置文件。如果我只是上傳沒有源代碼的二進制文件,應用程序?qū)o法運行,因為它缺少配置。所以我想知道這里的最佳做法是什么。我想到了幾個解決方案:上傳源代碼和二進制文件或從源代碼構建只上傳二進制文件和配置文件。移至,但我認為使用此解決方案,代碼的結構化程度會降低,因為如果您有很多配置,環(huán)境變量將難以管理yml config。Env Variables提前致謝。
查看完整描述

3 回答

?
月關寶盒

TA貢獻1772條經(jīng)驗 獲得超5個贊

部署的良好實踐是在潔凈室(例如 Docker 映像)中運行可重現(xiàn)的構建過程并生成要部署的工件(二進制文件、配置、資產(chǎn)),理想情況下還可以運行一些測試來證明上次沒有任何問題。

將服務 - 二進制文件及其所有需要的文件(配置、輔助文件,如 systemd、nginx 或 logrotate 配置等)打包成某種包是一個好主意 - 無論是目標環(huán)境 Linux 發(fā)行版 (DPKG) 的原生包, RPM)、虛擬機映像、docker 映像等。這樣您(或負責部署的其他人)就不會忘記任何文件等。一旦您有了包,您就可以使用該打包格式的本機工具輕松驗證和部署( aptyumdocker...) 到生產(chǎn)環(huán)境。

對于配置和其他文件,我建議讓軟件從眾所周知的位置讀取它,或者至少可以選擇在命令行參數(shù)中傳遞路徑。如果您部署到 Linux,我建議您遵循LFHS(tldr;配置為/etc/yourapp/,二進制文件為/usr/bin/

不建議在生產(chǎn)環(huán)境中從源代碼構建軟件,因為構建需要通常不需要的工具(例如go,git依賴項等)。安裝和運行這些需要更多維護,并可能導致安全和性能風險。通常,您希望根據(jù)運行應用程序的要求將生產(chǎn)環(huán)境保持在最低限度。


查看完整回答
反對 回復 2022-06-27
?
蠱毒傳說

TA貢獻1895條經(jīng)驗 獲得超3個贊

我認為應用程序最常見的部署策略是嘗試遵循 12-factor-app方法論。

因此,在這種情況下,如果您的 YAML 文件是配置文件,那么將配置放在環(huán)境變量(ENV vars)上會更好。因此,當您在容器上部署應用程序時,從 ENV 變量配置正在運行的實例比將配置文件復制到容器更容易。

但是,在編寫系統(tǒng)軟件時,最好遵守您所使用的操作系統(tǒng)定義的文件系統(tǒng)層次結構。如果您使用的是類 Unix 系統(tǒng),您可以通過man hier在終端上鍵入來讀取層次結構。通常,我將編譯后的二進制文件安裝在/usr/local/bin目錄中,并將配置放在/usr/local/etc.

對于生產(chǎn)環(huán)境的部署,我創(chuàng)建了一個簡單的 Makefile 來完成構建和安裝過程。如果部署環(huán)境是裸機服務器或虛擬機,我通常使用 Ansible 使用 ansible-playbook 進行部署。playbook 將從代碼存儲庫中獲取源代碼,然后通過運行make命令構建、編譯和安裝軟件。

如果應用程序?qū)⒉渴鹪谌萜魃?,我建議您創(chuàng)建一個鏡像并使用多階段構建,這樣構建二進制文件所需的源代碼和其他工具就不會在生產(chǎn)環(huán)境中,并且鏡像大小會更小。但是,正如我之前提到的,從 ENV 變量而不是配置文件中讀取應用程序配置是一種常見的做法。如果應用程序需要配置很多東西,則可以在構建映像時將文件復制到映像中。


查看完整回答
反對 回復 2022-06-27
?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

當我們等待提案時::cmd/go支持在二進制文件中嵌入靜態(tài)資產(chǎn)(文件)來實現(xiàn)(請參閱當前提案),您可以使用該提案中列出的嵌入靜態(tài)資產(chǎn)文件工具之一。

這個想法是將您的靜態(tài)文件包含在您的可執(zhí)行文件中。
這樣,您可以分發(fā)您的程序而不依賴于您的來源。


查看完整回答
反對 回復 2022-06-27
  • 3 回答
  • 0 關注
  • 315 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號