首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Golang Dockerfile失败

Golang Dockerfile失败
EN

Stack Overflow用户
提问于 2016-06-23 12:18:51
回答 1查看 922关注 0票数 3

我有一个Golang web应用程序,我希望在Docker容器中运行它。我可以在容器之外很好地运行它,所以我知道它可以工作,但是当我从Dockerfile构建它并运行它时,它给了我一个错误。

Makefile如下所示

代码语言:javascript
复制
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如下所示

代码语言:javascript
复制
FROM golang

ADD engine /go/bin/engine

EXPOSE 7777

ENTRYPOINT /go/bin/engine

我正在构建映像,并使用以下命令运行它

代码语言:javascript
复制
docker build -t engine .
docker run -d --name engine -p 7777:7777 engine

它给出了下面的错误

代码语言:javascript
复制
/go/bin/engine: 1: /go/bin/engine: Syntax error: "(" unexpected
EN

回答 1

Stack Overflow用户

发布于 2017-09-05 01:03:06

当您构建二进制文件时,go build假定您正在尝试为当前计算机构建,它会为您选择GOOSGOARCH (described here)的值。

如果您不是在linux机器上构建,那么您将需要交叉编译linux的二进制文件,因为这是docker容器内的操作系统将运行的。Explanation here

你需要这样的东西:

代码语言:javascript
复制
GOOS=linux

build:
    $(GOGET); GOOS=$(GOOS) $(GOBUILD) -v -o engine
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37982259

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档