duanhuancong1969
2018-04-29 13:05
浏览 1.4k

使用Docker时在Goland中配置GOROOT

I am building a Go project with Docker in the new GoLand IDE. Unfortunately, I am not able to cofigure my GOROOT correctly, making it not possible to use the GoLand futures to the max.

I have the following 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

I now execute my project as follows:

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

This works, however, I cannot find how I can configure GoLand to use the path on my Docker image usr/local/go/bin for my GoRoot, is that even possible in GoLand? (If not, why even bother adding 'docker support'?)

图片转代码服务由CSDN问答提供 功能建议

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

我有以下dockerfile:< / p>

  FROM golang:1.9.3 
 
#允许在构建期间设置app_env(默认为空字符串)
ARG app_env 
#将环境变量设置为app_env参数 ,这样变量将保留在容器中以在代码中使用
ENV APP_ENV $ app_env 
 
 
COPY ./ /go/src/github.com/Name/ProjectName/

WORKDIR / go / src / github  .com / Name / ProjectName / app 
 
#安装所有依赖项
RUN go get ./...

#构建二进制文件
RUN go build 
 
#有了应用程序后放回\  nRUN应用程序
 
EXPOSE 8080 
   
 
 

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

  1. docker build -t项目名称。
  2. docker run -it -v〜/ project-dir:/go/src/github.com/Name/ProjectName/ 应用

    ,但是我找不到如何配置GoLand以使用pa 在GoRoot的Docker映像 usr / local / go / bin 上,在GoLand中甚至可能吗? (如果没有,为什么还要添加“ docker support”?)

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • duan19750503 2018-04-29 13:58
    已采纳

    As of 2018.1.2, it's impossible to use GoLand to develop Go applications that have their source code inside containers. The source code of your application, its dependencies, and Go itself need to be installed on your machine.

    If anyone has any idea on how to improve the Docker based development support, suggestions are welcomed, see: https://youtrack.jetbrains.com/issue/GO-3322

    As for why even bother adding support for Docker in the IDE? You can launch containers, you can use docker compose, and a host of other tools from the IDE. However, with the way containers work, there is no way for the IDE to get the source from the container and infer them.

    Furthermore, your container should not include the Go sources/workspace in the final container, so that it's optimized for size and deployment speed. You can use something like this to run, but be aware that additional work may be required.

    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
    
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题