首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行码头容器包含golang项目的问题

运行码头容器包含golang项目的问题
EN

Stack Overflow用户
提问于 2019-11-23 14:19:42
回答 2查看 451关注 0票数 2

当试图运行包含golang应用程序的我的坞映像时,我遇到了一些问题。这是一个错误:enter code herestandard_init_linux.go:211: exec用户进程导致"exec格式错误“。

这是我的环境:

代码语言:javascript
复制
GOARCH="amd64"
GOBIN="/home/nikolaj//home/nikolaj/go/bin"
GOCACHE="/home/nikolaj/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/nikolaj/go"
GOPROXY=""
GORACE=""
GOROOT="/snap/go/4765"
GOTMPDIR=""
GOTOOLDIR="/snap/go/4765/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build908015468=/tmp/go-build -gno-record-gcc-switches"

go environment : GOARCH="amd64"
GOBIN="/home/nikolaj//home/nikolaj/go/bin"
GOCACHE="/home/nikolaj/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"

GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/nikolaj/go"
GOPROXY=""
GORACE=""
GOROOT="/snap/go/4765"
GOTMPDIR=""
GOTOOLDIR="/snap/go/4765/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build838573681=/tmp/go-build -gno-record-gcc-switches"

码头文件:

代码语言:javascript
复制
FROM golang:1.12.0

WORKDIR /app

ENV SRC_DIR=/go/src/vk_acceptor/

ADD . $SRC_DIR

RUN cd $SRC_DIR; env; goenv; export GO111MODULE=on; go get -u; go build -o application; cp application /app/

RUN chmod +x application

ENTRYPOINT ["./application"]

格式化RUN command后,如下所示:RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/

docker build .命令的输出:

代码语言:javascript
复制
Sending build context to Docker daemon  9.067MB
Step 1/7 : FROM golang:1.12.0
 ---> cee68f119e19
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> 5bffbbf8f161
Step 3/7 : ENV SRC_DIR=/go/src/vk_acceptor/
 ---> Using cache
 ---> bf145f38f8db
Step 4/7 : ADD . $SRC_DIR
 ---> 766466f20647
Step 5/7 : RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/
 ---> Running in 7aeb8905c137
HOSTNAME=7aeb8905c137
SRC_DIR=/go/src/vk_acceptor/
HOME=/root
OLDPWD=/app
PATH=/go/bin:/usr/local/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
GOPATH=/go
PWD=/go/src/vk_acceptor
GOLANG_VERSION=1.12
/bin/sh: 1: goenv: not found
The command '/bin/sh -c cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/' returned a non-zero code: 127
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-27 19:47:47

standard_init_linux.go:211: exec user process caused "exec format error"错误是由于各种原因而发生的,而且不只是像许多论坛所说的那样,您尝试使用与主机不同的架构来启动映像。在我的示例中,发生此错误的原因是绑定程序被放置在停靠器容器中的错误目录中。

票数 1
EN

Stack Overflow用户

发布于 2019-11-24 07:16:04

如果您查看输出错误,您可以清楚地看到错误消息:

代码语言:javascript
复制
/bin/sh: 1: goenv: not found

我猜你想在你的命令中输入go env

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59008571

复制
相关文章

相似问题

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