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 关注
- 320 浏览
添加回答
举报