Dockerfile内で
-
Go 言語をインストール(mailpit コマンドを go install でインストールするために必要)
RUN apt install -y golang-go -
mailpit コマンドをインストール
インストール先が /root 配下だと Web サーバーから実行できないので、
/usr/local/bin へ移動
RUN go install github.com/axllent/mailpit && mv /root/go/bin/mailpit /usr/local/bin
以前はこの記述でmailpit コマンドが機能したのですが
最近、新たにDocker構築すると
RUN go install github.com/axllent/mailpit && mv /root/go/bin/mailpit /usr/local/bin
の箇所で失敗しました。
原因を調べているとGo 言語のバージョンが原因のようでした。
Go 言語のインストールで仮想サーバーにインストールされるGo 言語のバージョンはgo-1.19
mailpit コマンドをインストールするにはGo 言語バージョンはgo-1.21以上が必要になったようです。
対処法ですが
-
「mailpit コマンドをインストール」の箇所をコメントアウトしgo-1.19のままdocker構築
/usr/binを確認すると「go -> ../lib/go-1.19/bin/go」となっている -
/libに移動してmkdirでgo1.22.2フォルダを作成 その中で
sudo curl -L "https://go.dev/dl/go1.22.2.linux-amd64.tar.gz" -O
でgo1.22.2ダウンロード
- /lib内のgo-1.19をgo-1.19_bkにしてバックアップとして残し
go1.22.2内でgo1.22.2を解凍する
sudo mv go-1.19 go-1.19_bk
rm -rf go-1.19
mkdir go1.22.2
cd go1.22.2
tar -zxvf go1.22.2.linux-amd64.tar.gz
goフォルダができますので(中身はgo1.22.2)
sudo mv go ../go-1.19
としてgoフォルダを/lib/go-1.19として、中身はgo1.22.2のgoフォルダを移動してリネームする
(仮想環境でメールを確認したいだけですのでシンボリックリンク名go-1.19は変えてません。)
goのversionを確認しアップデート出来ていたらdockerを再起動
- mailpit コマンドをインストール
sudo go install github.com/axllent/mailpit@latest && mv /root/go/bin/mailpit /usr/local/bin
とすることでmailpit コマンドをインストールできてDocker内でmailpit でメール受信できました。
調査に時間がかかったので備忘録として残しておきます。
RUN apt install -y golang-go のデフォルトインストールのバージョンが
go-1.21以上に上がれば、この手間は無くなります。