错误standard_init_linux.go:178启动Docker映像时



我使用以下dockerfile使用无人机构建服务器构建了docker映像。

FROM centurylink/ca-certs
WORKDIR /app
ADD VERSION .
ADD conf/ conf/
ADD resources/ resources/
ADD app app
# Expose the application on port 8080
EXPOSE 80
ENTRYPOINT ["./app"]

但是,它导致例外standard_init_linux.go:178: exec user process caused "no such file or directory"

Docker主机是MacOS。我正在尝试在Amazon EC2 Linux实例中执行此图像。

以下是无人机构建脚本。(.drone.yml

workspace:
 base: /go
 path: src/github.com/me/app
pipeline:
 build:
   image: instrumentisto/glide
   commands:
     - glide install
     - export GOOS=linux
     - export GOARCH=amd64
     - go build
     - go test -v 
   when:
     event: [ push, tag ]
 publish:
   image: plugins/ecr
   repo: 111.dkr.ecr.eu-central-1.amazonaws.com/app
   registry: 111.dkr.ecr.eu-central-1.amazonaws.com
   dockerfile: Dockerfile
   tag: ${DRONE_TAG}
   default_tags: false
   default_branch: development
   secrets: [ ecr_access_key, ecr_secret_key, ecr_region ]
   when:
     event: tag
     status: success
     ref: refs/tags/v1*

我遇到了类似的问题,因此他们建议在脚本中添加Shebang系列。但是,就我而言,入口点不是脚本而不是golang可执行的。

您需要确保编译您的GO应用以静态链接。如果它寻找libc,则它将在您选择的容器中存在。使用GO网络呼叫和CGO,您通常会获得与创建LIBC之类的内容的动态链接。解决这些方法是CGO_ENABLED=0-tags netgo

相关内容

  • 没有找到相关文章

最新更新