关闭
duanhuancong1969 2018-04-29 05:05
浏览 1865
已采纳

使用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 05: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
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部