У меня есть веб-приложение Golang, которое я ищу для запуска в контейнере Docker. Я могу запустить его отлично за пределами контейнера, поэтому я знаю, что он работает, но когда я его создаю с Dockerfile
и запускаю его, он дает мне ошибку.Golang Dockerfile Failing
Makefile
выглядит следующим образом
GOCMD = go
GOBUILD = $(GOCMD) build
GOGET = $(GOCMD) get -v
GOCLEAN = $(GOCMD) clean
GOINSTALL = $(GOCMD) install
GOTEST = $(GOCMD) test
.PHONY: all
all: build
test:
$(GOTEST) -v -cover ./...
build:
$(GOGET); $(GOBUILD) -v -o engine
clean:
$(GOCLEAN) -n -i -x
rm -f $(GOPATH)/bin/engine
rm -rf bin/engine
install:
$(GOINSTALL)
И Dockerfile
выглядит следующим образом
FROM golang
ADD engine /go/bin/engine
EXPOSE 7777
ENTRYPOINT /go/bin/engine
Я строящей изображение и выполняется его с помощью следующих
docker build -t engine .
docker run -d --name engine -p 7777:7777 engine
и это дало мне ошибку
/go/bin/engine: 1: /go/bin/engine: Syntax error: "(" unexpected
Q: почему построить Go внутри контейнера? Почему у вас нет встроенного бинарного файла, в который входит ваш Dockerfile? – elithrar
Построение его в контейнере имеет для меня больше смысла. Кажется, чтобы обеспечить более последовательную сборку. –
Отъезд https://blog.golang.org/docker Мне кажется, что вам не хватает настройки в вашем файле докеров. –