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 /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 /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