1 回答

TA貢獻1765條經驗 獲得超5個贊
這個問題驅使我在迫在眉睫的最后期限前轉過彎,我花了整整 24 小時才弄清楚發生了什么。這個問題是一個相當微妙的問題。所以這里是為了任何遇到這個線程的人的利益的解釋。
永遠不要忘記:為了讓 Golang 發揮它的魔力,操作系統必須能夠找到它。輸入 $GOPATH 環境變量。如果你像我一樣,你會按照網上某處的說明進行操作。我按照Vultr 上這篇文章中的說明進行操作。他們建議的要點
echo export GOPATH=/opt/gopkg >> ~/.bashrc
echo export GOROOT=/opt/go >> ~/.bashrc
echo export PATH=$PATH:$GOROOT/bin:$GOPATH/bin >> ~/.bashrc
很棒的說明 - 謝謝 Vultr。
關鍵問題
正如我在最初的問題中提到的,令我感到困惑的是,當我執行gorun包含
go run /path/to/index.go &
從附加到它工作的 Docker 會話的終端會話。但是,當我嘗試從 Docker 會話開始時執行的 bash 腳本執行它時,它沒有。
當您稍微思考一下并查看上面 Vultr 說明中發生的事情時,一切都非常明顯。只有在交互式終端打開時才設置路徑變量!- 即不是當您嘗試go dosomething從任何舊的批處理文件執行指令時 - 例如您在 Docker 容器啟動時運行的那個。
如果您想讓 Golang 在容器啟動時運行的 bash 腳本頂部的 Docker 容器內正確運行,則需要發出
export GOPATH="/opt/gopkg";
export GOROOT="/opt/go";
export PATH=$PATH:$GOPATH/bin:$GOROOT/bin;
- 1 回答
- 0 關注
- 341 瀏覽
添加回答
舉報