1
Help us understand the problem. What are the problem?

posted at

updated at

【Go/ Docker】開発環境用パッケージをgo installしようとしてつまづいた時の対処法

起こった事象

ある日、DockerでGoの開発を行っていた時に、Live Reload用に「gin」というパッケージをインストールして使っていました。

別の日に別のPCから開発をする必要があったため、事前にDockerfileを以下のように書き換えておきました。

FROM golang:1.18.1-alpine3.15

WORKDIR /go/app/

RUN apk update \
&&  export GO111MODULE=suto

COPY ./app/ .

RUN go mod tidy \
&&  go install github.com/codegangsta/gin
# go mod tidyを実行するとコードで使用されているパッケージのみがgo.mod/go.sumに反映されるため、
# go mod tidy実行後にginのインストールを行っている

EXPOSE 8080

CMD ["gin", "--immediate", "run", "main.go", "0.0.0.0:8080"]

そして後日、別PCからdocker runしたところ下記のようなエラーが...

ERROR: for app  Cannot start service app:
OCI runtime create failed:
container_linux.go:380:
starting container process caused: exec: "gin": executable file not found in $PATH: unknown

「ginというコマンドが見つからない」と言われていますが、自分の中ではDockerfileの中で確かにインストールしていたはず...

解決方法

「go install」を使う場合は、バージョンの指定も必須 だったようです。

そのためDockerfileを下記のように修正しなおしました。

RUN go mod tidy \
&&  go install github.com/codegangsta/gin

RUN go mod tidy \
&&  go install github.com/codegangsta/gin@latest

特別バージョンの指定をしたいわけではない場合には、@latestを付ければ問題ないようです。

上記にてとりあえずのところエラーは解決しました。:clap_tone1:

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
1
Help us understand the problem. What are the problem?