2017-11-30 5 views
1

ドローン・ビルド・サーバーを使用して以下のDockerfileを使用してドッカー・イメージを構築しました。エラーstandard_init_linux.go:ドッキング・イメージを開始するときに178

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"

ドッカーホストが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* 

私は、彼らがスクリプトでシェバング行を追加することをお勧めSO場所で同様の問題に出くわしました。しかし私の場合、エントリポイントはgolang実行可能ファイルではなくスクリプトではありません。

答えて

1

あなたのgoアプリが静的にリンクされるようにコンパイルされていることを確認する必要があります。 libcを検索すると、選択したコンテナには存在しません。 goネットワークコールとcgoを使うと、libcのようなものへの動的リンクを作成することがよくあります。その解決策はCGO_ENABLED=0-tags netgoです。

+0

CGO_ENABLED = 0を追加すると問題が解決しました。ありがとう – Anuruddha

関連する問題