【问题标题】:How can I configure go sdk and GOPATH from docker container?如何从 docker 容器配置 go sdk 和 GOPATH?
【发布时间】:2017-07-23 15:56:06
【问题描述】:

我正在尝试使用 Jetbrains Gogland 和 docker compose 配置 golang 项目。我想使用 GOPATH 并从 docker 容器中去。我的意思是使用容器中的 go 安装进行自动完成等,而不在本地机器上安装 golang。 项目结构为:

project root
    docker-compose.yml
    back|
         Dockerfile
         main.go
         some other packages
    front|
         all the front files...

之后,我想将我的back 文件夹部署到docker 容器中的/go/src/app。问题是,当我开发项目时,我不能使用自动完成,因为这个项目不在我的本地 GOPATH 中,并且 docker 容器和我的本地机器上有不同的 golang 版本 我已经阅读了this 的问题,但我仍然无法解决我的问题。

【问题讨论】:

  • 你想从Docker容器访问你本地机器上的Go SDK吗?
  • @Arpit 是的,去 sdk 和去路径
  • @Arpit 感谢您的评论。但是我怎样才能把一个 go SDK 链接添加到 goglang 设置中。 '-v' 它是 docker-compose 文件中的卷部分吗?
  • 我只是好奇,这个的用例是什么?为什么您希望仅在容器中拥有源代码和 Go?
  • @dlsniper 也许只是因为我还没有另一个码头工人技能,我试图发明一辆自行车。这种方式可以解决我的问题。

标签: docker go docker-compose goland gopath


【解决方案1】:

目前这是不可能的。我也看不出将来怎么可能。在 docker 中挂载卷意味着您从容器中“隐藏”该文件夹的内容并使用主机上的文件。因此,只要您从机器上挂载目录,该实例中的容器文件就不会对机器可用。这意味着您不能在容器中安装 Go,然后安装一个文件夹并将该位置用于 Go 源。如果你在想:我只是把东西挂在另一个地方,做一些符号链接魔术/复制文件,那只是一个坏主意,会导致无处可去。

从几周前发布的 EAP 10 开始,Gogland 支持远程调试。这允许您调试在容器或远程主机上运行的应用程序。因此,您可以在您的机器上安装 Go 和源代码,但让它们在容器中运行。

【讨论】:

  • 这是真的,但 docker 也允许从 container into a volume 复制数据。然后可以使用 docker-compose v3 中的命名卷或 docker-compose v2 中的 volumes_from 在容器/服务之间共享这些数据。如果 docker-compose 扩展机制以允许您将主机目录绑定到此卷,就像服务如何挂载此填充的数据卷一样,它将满足 OP 的需求。
  • 从技术上讲,我们已经可以通过从指定 /go 的 golang 容器创建一个卷来做到这一点,然后使用 go 二进制文件填充该卷。之后,我们将在主机上找到挂载点并从那里进行符号链接,但正如您所暗示的,处理起来很麻烦。
猜你喜欢
  • 2015-12-31
  • 2014-09-06
  • 2014-11-29
  • 2018-03-07
  • 2022-01-02
  • 2018-05-29
  • 2021-07-03
  • 1970-01-01
相关资源
最近更新 更多