Open5

testcontainers-go 利用メモ

tenkohtenkoh

LocalStackなどを使って、外部サービスをモックにしないテストを実施してみたく、testcontainers-goを使ってみる。

tenkohtenkoh

GoのテストのTestMainの中でコンテナを起動する処理を書いてみたが、複数のテストを実行する場合にエラーになることがある。

create container: port not found: creating reaper failed
tenkohtenkoh

このIssueが怪しい
https://github.com/testcontainers/testcontainers-go/issues/2172

いくつかやり取りを見てみると、使用済みコンテナを掃除するreaperが、複数テストを実行すると起動できないことがあると読める。SkipReaperオプションをONにすると解消するともあるが、その辺りのオプションを調べてみる。

https://golang.testcontainers.org/features/configuration/

reaperとして使うRyukは優先的に立ち上げられなければいけないが、これがうまくいっていないのだろうか?TESTCONTAINERS_RYUK_CONTAINER_PRIVILEGED環境変数をtrueにすれば良さそう。

(TestMainでコンテナ起動処理書いたのミスったかな? t.Setenv使えないや)

tenkohtenkoh

無理やりos.SetenvTESTCONTAINERS_RYUK_CONTAINER_PRIVILEGEDを設定してみると…解消!