Как правильно запустить приложение golang в докере?

И еще один:

reduce(lambda x, y:x or  getattr(obj, y, None),  "a b c".split(), None)

(в Python 3 вам нужно импортировать сокращение из functools. Он встроен в Python 2)

1
задан Nurzhan Nogerbek 11 March 2019 в 14:00
поделиться

1 ответ

Импорт в вашем файле main.go указывает:

"questionnaire/database" "questionnaire/routes" "questionnaire/utils"

Это означает, что компилятор go ищет эти пакеты в $GOPATH/questionnaire и $GOROOT/questionnaire. Вы должны убедиться, что они скопированы в правильное место внутри образа докера, который вы создаете.

По умолчанию $ GOPATH внутри этого изображения golang:1.12 - /go. Убедитесь, что ваш пакет анкет правильно размещен в каталоге /go/src внутри образа докера.

Что касается Dockerfile: общая стратегия при создании / развертывании образов Docker для приложений go заключается в использовании шаблона компоновщика (см. Пример Dockerfile ниже). Суть его в том, чтобы создать многоэтапный Dockerfile, где на первом этапе создается исполняемый файл go, а на втором этапе запускается его. Это означает, что вы можете изолировать все ваши зависимости на первом этапе и в итоге получить очень маленькое общее изображение в конце.

Это может выглядеть примерно так:

FROM golang:1.11-alpine AS builder

########
# Prep
########

# add the source
COPY . /go/src/questionnaire
WORKDIR /go/src/questionnaire/

########
# Build Go Wrapper
########

# Install go dependencies
RUN go get github.com/gorilla/mux && \
  go get github.com/gorilla/handlers && \
  go get github.com/lib/pq && \
  go get github.com/joho/godotenv && \
  go get github.com/jinzhu/gorm && \
  go get github.com/go-goracle/goracle

#build the go app
RUN GOOS=linux GOARCH=amd64 go build -o ./questionnaire ./main.go

########
# Package into runtime image
########
FROM alpine

# copy the executable from the builder image
COPY --from=builder /go/src/questionnaire .

ENTRYPOINT ["/questionnaire"]

EXPOSE 8080

Надеюсь, это поможет!

(отредактировано, чтобы отразить комментарии ниже)

0
ответ дан Opnauticus 11 March 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: