新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Dockerfileのタグでlatestは使っちゃいけないなぁと思った

定期的に、AWS S3のファイルを、Google Cloud Storageにコピーしています。

コピーのやり方は色々あるのですが、ここではGoogle Cloud SDKのgsutilコマンドを使っていて、 Google Cloud SDKは、Alpine LinuxのDockerイメージを使用しています。

しかし、ある時から、下記のようなエラーがでるようになって、コピーができなくなりました。

...

Traceback (most recent call last):
  File "/google-cloud-sdk/platform/gsutil/gslib/boto_translation.py", line 632, in _PerformSimpleDownload
    key.get_contents_to_file(download_stream,
TypeError: get_contents_to_file() got an unexpected keyword argument 'hash_algs'

...

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 8191: unexpected end of data

...

原因

最新のCloud SDKだとエラーになるようで、Dockerfileで古いバージョンにすると直りました。

FROM google/cloud-sdk:276.0.0-alpine

それまでは、最新版を取ってくるようにしていました。

FROM google/cloud-sdk:alpine

感想など

原因究明に時間取られました…。

最初にDockerfileを作った時に、いずれバージョン固定した方がいいんだろうとな思いつつ、問題になった時に考えればいいかと「latest」にしていましたが、それから数年問題なく動いていたので、問題になった時にはその事をすっかり忘れていました…。

Google Cloud SDKに限らず、テストで使う分にはDockerのイメージは最新版でいいのですが、実際に使うとなった時点で、バージョン固定した方がいいですね。

関連カテゴリー(Docker)記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com