3

我正在新的 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”?)

4

1 回答 1

2

从 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
于 2018-04-29T13:58:08.440 回答