Как я могу узнать, какая версия зависимости была извлечена? - PullRequest
2 голосов
/ 15 апреля 2019

В main.go У меня есть такой оператор импорта:

import (
    "fmt"
    "log"
    "os"
    "os/signal"
    "strings"
    "syscall"
    "github.com/bwmarrin/discordgo"
)

И я сталкиваюсь с ошибкой, которая должна быть исправлена ​​в более поздних версиях этой зависимости. Как определить, какая версия была загружена при создании развернутого док-контейнера?

В GoLand не отображаются внешние зависимости:

enter image description here

Вот мой Dockerfile:

FROM golang:1.12-alpine
RUN mkdir /app
WORKDIR /app
ADD src/ /app

ENV CGO_ENABLED=0
ENV GO111MODULE=off

# Fetch application dependencies
RUN apk add --no-cache --update git \
    && go get github.com/bwmarrin/discordgo \
    && go get github.com/jonas747/dshardmanager \
    && go get github.com/bugsnag/bugsnag-go \
    && apk del git

# Build binary
RUN go build -o main .

CMD ["/app/main"]

Ответы [ 3 ]

1 голос
/ 15 апреля 2019

Есть несколько способов сделать это. Когда вы запускаете go get remote/path/to/lib, он устанавливает его на $GOPATH/src/remote/path/to/lib, поэтому, если вы cd перейдете по этому пути и запустите git describe --tags, вы увидите, что вытащена последняя версия. Однако если вы управляете своим проектом с помощью модулей go, вы сможете увидеть версию, которую вы используете, в файле go.mod после имени зависимости.

Итак, по существу: go get github.com/bwmarrin/discordgo && cd $GOPATH/src/github.com/bwmarrin/discordgo && git describe --tags должен быть быстрым и грязным способом найти версию, которую вы используете для этого конкретного сценария.

0 голосов
/ 15 апреля 2019

Я вижу, что ваш GoLand SDK в другой версии с вашим Docker.Если вы используете 1.12, вы можете попробовать использовать модуль Go.Он сгенерирует файл go.mod, который опишет ваш пакет и версию, а также улучшит управление.Например:

module github.com/example

require (
    github.com/Azure/azure-storage-blob-go v0.0.0-20190104215108-45d0c5e3638e
    github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23
    github.com/gorilla/context v1.1.1 // indirect
    github.com/gorilla/mux v1.6.2
    github.com/patrickmn/go-cache v2.1.0+incompatible
    github.com/prometheus/client_golang v0.9.2
    github.com/sirupsen/logrus v1.3.0
    golang.org/x/net v0.0.0-20181220203305-927f97764cc3
    golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4 // indirect
    golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e // indirect
    gopkg.in/resty.v1 v1.12.0
)
0 голосов
/ 15 апреля 2019

Если вы хотите обновить версию своего пакета, попробуйте использовать go get -u <package>

Или, возможно, использовать управление зависимостями, например dep. (https://github.com/golang/dep) Вы можете указать свои версии в вашем Gopkg.toml.

или go modules, если вы используете версию 1.11 или выше для golang.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...