duanhuancong1969 2018-04-29 13:05
浏览 1863
已采纳

使用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'?)

  • 写回答

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
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp
  • ¥15 自己做的代码上传图片时,报错
  • ¥15 Lingo线性规划模型怎么搭建
  • ¥15 关于#python#的问题,请各位专家解答!区间型正向化
  • ¥15 unity从3D升级到urp管线,打包ab包后,材质全部变紫色
  • ¥50 comsol温度场仿真无法模拟微米级激光光斑
  • ¥15 上传图片时提交的存储类型
  • ¥15 VB.NET如何绘制倾斜的椭圆