亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何使用戈多騰夫根據構建命令在 env 文件之間切換?

如何使用戈多騰夫根據構建命令在 env 文件之間切換?

Go
一只名叫tom的貓 2022-09-26 20:20:55
我計劃使用godotenv為我的項目設置不同的環境,但我不確定如何在文件之間切換,如,dev.envuat.envprod.env我希望能夠在我的 Docker 命令中傳遞一個值,并讓 godotenv 拾取相對 env 文件 - 在這種情況下(假設這是正確的方法。RUN go build -o my-project --prod .prod.env另外,我如何確保其他env文件不會包含在特定env的構建中。
查看完整描述

2 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超3個贊

我會建議你按照命令行上的Go文檔的建議使用標志-X


-X importpath.name=value

    Set the value of the string variable in importpath named name to value.

    This is only effective if the variable is declared in the source code either uninitialized or initialized to a constant string expression. -X will not work if the initializer makes a function call or refers to other variables.

    Note that before Go 1.5 this option took two separate arguments.

這樣,您就可以調用引用它的任何文件的位置。.env


例如go build -ldflags="-X 'package_path.variable_name=new_value'" 


那是


go build -ldflags "-X 'my/main/config.Version=v1.0.0'" -o $(MY_BIN) $(MY_SRC)


查看完整回答
反對 回復 2022-09-26
?
紅糖糍粑

TA貢獻1815條經驗 獲得超6個贊

在構建階段對環境進行硬編碼對我來說似乎很奇怪。您不想為每個env構建差異映像,這是浪費。


模塊文檔建議了更好的方法:


現有 env 優先于稍后加載的 env。


管理多個環境(即開發、測試、生產)的約定是創建一個名為 {YOURAPP}_ENV的 env,并按以下順序加載 envs:


env := os.Getenv("FOO_ENV")

if "" == env {

  env = "development"

}


godotenv.Load(".env." + env + ".local")

if "test" != env {

  godotenv.Load(".env.local")

}

godotenv.Load(".env." + env)

godotenv.Load() // The Original .env


查看完整回答
反對 回復 2022-09-26
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號