Open2

詰まったことメモ

かとりょーかとりょー

Goのアプリの為に作成したDockerイメージがコンテナ実行時に失敗する

実行時にこんなエラーが出力されコンテナが落ちる。
standard_init_linux.go:219: exec user process caused: no such file or directory

Before

FROM golang:1.15.5 as builder

ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64

WORKDIR /build
COPY . .

RUN ls
RUN go build

FROM alpine:3.12.1

COPY --from=builder /build/server /opt/app/

ENTRYPOINT [ "/opt/app/server" ]

After

FROM golang:1.15-alpine3.12 as builder

ENV CGO_ENABLED=1 GOOS=linux GOARCH=amd64

RUN apk add --no-cache \
        alpine-sdk

WORKDIR /build
COPY . .

RUN go build ./cmd/server

FROM alpine:3.12.1

COPY --from=builder /build/server /opt/app/

ENTRYPOINT [ "/opt/app/server" ]

原因

元々はCGO_ENABLED=0だったが、go-sqlite3の為にCGO_ENABLED=1に変更した。その結果上記のエラーが出るようになった。
golang:1.15.5はDebian 10なのに実行時がalpineでズレがあったのが原因っぽい?

かとりょーかとりょー

Docker for Macをインストールした場合にzshで補完を効かせる。

Docker for Macのインストール

brew install --cask docker

この2つのシンボリックリンクをはる。

ln -s /Applications/Docker.app/Contents/Resources/etc/docker.zsh-completion \
/usr/local/share/zsh/site-functions/_docker
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.zsh-completion \
/usr/local/share/zsh/site-functions/_docker-compose