1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Docker構築にてGO言語のバージョンが原因でmailpit コマンドをインストールできなかった場合の対処法

Last updated at Posted at 2024-05-01

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以上に上がれば、この手間は無くなります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?