【问题标题】:Configure GOROOT in Goland when using docker使用docker时在Goland中配置GOROOT
【发布时间】:2018-04-29 13:05:54
【问题描述】:

我正在新的 GoLand IDE 中使用 Docker 构建一个 Go 项目。不幸的是,我无法正确配置我的GOROOT,因此无法最大限度地使用 GoLand 期货。

我有以下 dockerfile:

FROM golang:1.9.3

# allows app_env to be set during build (defaults to empty string)
ARG app_env
# sets an environment variable to app_env argument, this way the variable will persist in the container for use in code
ENV APP_ENV $app_env


COPY ./ /go/src/github.com/Name/ProjectName/

WORKDIR /go/src/github.com/Name/ProjectName/app

# install all dependencies
RUN go get ./...

# build the binary
RUN go build

# Put back once we have an application
RUN app

EXPOSE 8080

我现在执行我的项目如下:

  1. docker build -t project-name .
  2. docker run -it -v ~/project-dir:/go/src/github.com/Name/ProjectName/app

这可行,但是,我找不到如何配置 GoLand 以将我的 Docker 映像 usr/local/go/bin 上的路径用于我的 GoRoot,这在 GoLand 中是否可行? (如果没有,为什么还要添加“docker support”?)

【问题讨论】:

    标签: docker go goland


    【解决方案1】:

    从 2018.1.2 开始,无法使用 GoLand 开发将源代码包含在容器中的 Go 应用程序。您的应用程序的源代码、它的依赖项以及 Go 本身都需要安装在您的机器上。

    如果有人对如何改进基于 Docker 的开发支持有任何想法,欢迎提出建议,请参阅:https://youtrack.jetbrains.com/issue/GO-3322

    至于为什么还要在 IDE 中添加对 Docker 的支持呢?您可以启动容器,可以使用 docker compose 以及 IDE 中的许多其他工具。但是,由于容器的工作方式,IDE 无法从容器中获取源并推断它们。

    此外,您的容器不应在最终容器中包含 Go 源/工作区,以便针对大小和部署速度进行优化。您可以使用类似的东西来运行,但请注意可能需要额外的工作。

    FROM golang:1.9.3 as build-env
    
    # allows app_env to be set during build (defaults to empty string)
    ARG app_env
    # sets an environment variable to app_env argument, this way the variable     will persist in the container for use in code
    ENV APP_ENV $app_env
    
    COPY ./ /go/src/github.com/Name/ProjectName/
    
    WORKDIR /go/src/github.com/Name/ProjectName/app
    
    # install all dependencies
    RUN go get ./...
    
    # build the binary
    RUN go build -o /my_app
    
    # final stage
    FROM scratch
    
    COPY --from=build-env /my_app /
    
    # Put back once we have an application
    CMD ["/my_app"]
    
    EXPOSE 8080
    

    【讨论】:

    • 感谢您的帮助!只是想知道:为什么 jetbrains 选择不让这成为可能?
    • 不幸的是,这真的不是我们可以解决的问题。如果不做 SSH 桥或类似的事情,我们就无法访问容器内的文件。这并不是一个很好的开发体验,也不允许使用最少的 docker 容器。
    • @dlsniper PyCharm 对在 Docker 容器内构建提供了极好的支持。你能提供一些类似的东西吗?我假设在 PyCharm 中它可以安装 src 目录。
    • 我们仍在探索如何使用 Docker 容器进行开发,请参阅我的回复中的票证。就个人而言,我不明白为什么有人会在 Docker 容器中进行实际开发,使用 git、各种 go 工具并从那里进行提交。它违背了容器应该是的一切,并且将它们用作虚拟机而不是容器。话虽如此,我的意见在这种情况下并不重要,当我们弄清楚如何支持这种情况时,我们会更新票证。我希望这会有所帮助。
    • 这没有意义。 PHPStorm(另一个 Jet Brains 应用程序)具有从正在运行的 docker 容器加载 PHP 的选项。它从容器中加载 PHP,因此您不需要在主机上安装 PHP。然后 PHPStorm 查找/推断正在运行的容器中的所有 PHP 库。我不确定如何,也许它映射了一个 docker 卷。 GoLand 可以试试 PHP Storms 的做法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多