简体   繁体   English

运行docker容器包含golang项目的问题

[英]Problem with run docker container contains golang project

I experience some problem when attempt to run a my docker image that contain golang application. 尝试运行包含golang应用程序的docker映像时遇到一些问题。 This Is an error: enter code here standard_init_linux.go:211: exec user process caused "exec format error" 这是错误:请enter code here standard_init_linux.go:211:exec用户进程导致“ exec格式错误”

This Is my 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-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"

The dockerfile: dockerfile:

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"]

After formatting RUN command it looks like this: RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/ 格式化RUN command它看起来像这样: RUN cd $SRC_DIR && env && goenv && export GO111MODULE=on && go get -u && go build -o application && cp application /app/

Output of docker build . docker build .输出docker build . command : 命令:

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

If you look at the output error, you can clearly see the error message: 如果查看输出错误,则可以清楚地看到错误消息:

/bin/sh: 1: goenv: not found

I presume you wanted to type go env in your command? 我想您想在命令中键入go env

The standard_init_linux.go:211: exec user process caused "exec format error" error occurs for various reasons, and not only when you try to launch an image with an architecture different from your host machine, as many forums say. standard_init_linux.go:211: exec user process caused "exec format error"各种原因standard_init_linux.go:211: exec user process caused "exec format error"错误发生,这不仅是由于许多论坛所说的,不仅是当您尝试使用不同于主机的体系结构启动映像时。 In my case, this error occurred due to the fact that the bundled program was placed in the wrong directory in the docker container. 在我的情况下,由于将捆绑的程序放置在Docker容器中的错误目录中而发生此错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM