Skip to content

2022/02

golang で docker サブコマンドを実装する

docker-compose 当初 Python で書かれていましたが、v2 からは golang で書き直され、使い方も (v1 の docker-compose では無く) docker compose 〜 といった具合に利用するように変更されました。 docker コマンドのサブコマンドとして動作しているように見えますが、これは cobra を使って実装されているようです。 以下は cobra の公式ページからの引用です。

Cobra is both a library for creating powerful modern CLI applications as well as a program to generate applications and command files.

docker サブコマンドとしての実装例は下記が参考になります。

  • https://github.com/docker/cli/blob/master/cli-plugins/examples/helloworld/main.go
  • https://github.com/docker/compose/blob/v2/cmd/main.go

上記を参考に、更にダイエットして「最小の docker サブコマンド」をメモしておきます。

distroless/static ベースの OAuth2 Proxy コンテナイメージを作成した

Louketo に EOL notice として下記の記載があります。 Sunsetting Louketo Project にも同様の記載があります。

Louketo Proxy reached end of line in November 21, 2020. This means that we no longer support, or update it. The details are available here.

FAQ に下記の記載もあります。

Are there any alternatives I should use instead? OAuth2 Proxy is very close in a set of capabilities to Louketo Proxy and we highly suggest you investigate it as a replacement.

上述の通り、OAuth2 Proxy が代替候補として記載されています。 OAuth2 Proxy は golang で書かれており、シングルバイナリで動作する為、デプロイも簡単です。 OAuth2 Proxy は公式にも docker コンテナイメージが配布されているのですが、distroless/static ベースなイメージを作成したのでメモしておきます。