2017-11-30 4 views
1

Drone 빌드 서버로 다음 Dockerfile을 사용하여 도커 이미지를 만들었습니다.error 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"

도커 호스트 맥 OS되는 예외 초래한다. 그리고 Amazon EC2 리눅스 인스턴스에서이 이미지를 실행하려고합니다.

다음은 드론 빌드 스크립트입니다. (.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를 찾으면 선택한 컨테이너에 존재하지 않습니다. 이동 네트워크 호출과 cgo를 사용하면 종종 libc와 같은 것들에 동적 링크가 생깁니다. 그 해결책은 CGO_ENABLED=0-tags netgo입니다.

+0

CGO_ENABLED = 0을 추가하면 문제가 해결되었습니다. 감사 – Anuruddha