Как установить пакет golang в файл docker?

Я новичок в docker и хочу установить docker-compose для моего приложения django. В бэкенде моего приложения есть пакеты golang и я запускаю их в djang с библиотекой subprocess.
Но когда я хочу установить пакет с помощью go install github.com/x/y@latest и затем скопировать его двоичный файл в каталог проекта, он выдает ошибку: package github.com/x/y@latest: cannot use path@version syntax in GOPATH mode
Я много искал в интернете, но не нашел решения моей проблемы. Не могли бы вы подсказать, где я ошибаюсь?\

вот мой Dockerfile:

FROM python:3.8.11-bullseye
    
# set work directory
WORKDIR /usr/src/toolkit/

# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
    
# Install packages
RUN apt-get update \
    && apt-get -y install --no-install-recommends software-properties-common libpq5 python3-dev musl-dev git netcat-traditional golang openvpn freerdp2-x11 tigervnc-viewer apt-utils \
    && rm -rf /var/lib/apt/lists/*
RUN go install github.com/x/y@latest && cp pacakge /usr/src/toolkit/toolkit/scripts/webapp/
 
# install dependencies
RUN pip install --upgrade pip
COPY ./requirements.txt .
RUN pip install -r requirements.txt
 
# copy entrypoint.sh
COPY ./entrypoint.sh .
RUN sed -i 's/\r$//g' /usr/src/toolkit/entrypoint.sh
RUN chmod +x /usr/src/toolkit/entrypoint.sh
    
# copy project
COPY . .
    
# run entrypoint.sh
ENTRYPOINT ["/usr/src/toolkit/entrypoint.sh"]

GOPATH режим не работает с модулями Golang, в вашем файле Dockerfile добавьте:
RUN unset GOPATH

Это выглядит как действительно хороший кандидат для многоступенчатой сборки:

FROM golang:1.18.0 as go-build
       
# Install packages
RUN go install github.com/x/y@latest \
 && cp $GOPATH/bin/pacakge /usr/local/bin/
 
FROM python:3.8.11-bullseye as release
...
COPY --from=go-build /usr/local/bin/package /usr/src/toolkit/toolkit/scripts/webapp/
...

использовать RUN go get <package_repository>

Вернуться на верх