1 回答

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