Настройте GOROOT в Goland при использовании докера - PullRequest
0 голосов
/ 29 апреля 2018

Я создаю проект Go с Docker в новой среде GoLand. К сожалению, я не могу правильно настроить мой 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? (Если нет, зачем вообще добавлять «поддержку докеров»?)

1 Ответ

0 голосов
/ 29 апреля 2018

Начиная с 2018.1.2, невозможно использовать GoLand для разработки приложений Go, исходный код которых находится внутри контейнеров. Исходный код вашего приложения, его зависимости и сам Go должны быть установлены на вашем компьютере.

Если у кого-то есть идеи по улучшению поддержки разработки на основе Docker, предложения приветствуются, см .: https://youtrack.jetbrains.com/issue/GO-3322

А зачем вообще добавлять поддержку Docker в IDE? Вы можете запускать контейнеры, вы можете использовать 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
...