きり丸の技術日記

技術検証したり、資格等をここに残していきます。

Dockerfileを静的解析できるhadolintを使う(Haskell Docker Linter)

Dockerfileを静的解析できるhadolint(Haskell Docker Linter)を使ってみました。詳細は公式やほかの方のブログを見てください。

環境

  • 20230312時点

対応

Dockerfileが存在するディレクトリで、次のコマンドを実行するとDockerfileに対してlintをかけられます。

docker run --rm -i hadolint/hadolint < Dockerfile

GitHub Actionsもあるため、次の使い方でlintをかけられます。

- uses: hadolint/hadolint-action@v3.1.0
  with:
    dockerfile: Dockerfile

ソースコード

終わりに

カスタマイズもできるのですが自分が活用しているDockerfileがシンプルだったのか、特に修正箇所もなかったのでかなり薄い記事になっています。

自分が使用しているDockerfileについてベストプラクティスに従っているかどうかを確認したい場合は、簡単に使用できるので確認してみてはいかがでしょうか。

参考情報

Pythonで関数とNoneの型ヒントをつけたい(Resolve TypeError: unsupported operand type(s) for |: 'function' and 'NoneType')

Pythonで関数とNoneが取りうるパラメータに対して、Union型で型ヒントを与えようとしたところエラーになったので解決方法をメモします。

環境

  • Python
    • 3.9

対応

Union型を使わずに、Optional型でヒントを与えます。今回ハマっていたのは、sqlalchemyand_条件をパラメータとして渡したかったので、そのユースケースを記載します。

def test(
  OK: Optional[and_],
  NG: and_ | None
):
  pass

NG側の型ヒントだと、次のようなエラーが発生してしまいます。

E   TypeError: unsupported operand type(s) for |: 'function' and 'NoneType'

ソースコード

終わりに

Union型で型ヒントを定義できるのは、Python3.9以降だったので頑張ってUnion型で定義しようとしてしまいました。

一応、ヘルプではこう表現しているので、やろうと思ったら行けると思うんですけど。

Optional[X] is equivalent to X | None (or Union[X, None]).

あまりないケースかもしれませんが、残しておきます。

参考情報

Git LFSでプロキシを経由させる・させない(HTTPS_PROXY, NO_PROXY)

Git Large File System(Git LFS)のツールを使っていて、プロキシを経由させたり、経由させないようにする方法が見つからなかったのでメモします。

環境

  • Mac
    • zsh

対応

次の設定値を使用します。大文字と小文字で設定値の優先度が異なります。

# 上に記載しているほど優先度が高いです

# プロキシサーバの設定
HTTPS_PROXY
https_proxy
HTTP_PROXY
http_proxy

# プロキシを経由させない設定
NO_PROXY
no_proxy

その設定や優先度はどこから読み取れるか、というのは次のソースコードに載っています。

終わりに

実環境ではNO_PROXYno_proxyを違う値を設定していたので、全然疎通が取れずに困っていました。gitコマンドは疎通できるが、git lfsが疎通できない理由がわからずにハマってしまっていました。

しかも、README.mdproxyの設定が記載されておらずにINSTALLING.mdだけにしか記載がなく、NO_PROXYに関してはどこにも書いていないのが非常に困りました。「ドキュメントに反映して欲しい!」ってIssueは上げたのですが、Gitコマンドと同じ挙動をさせているというコメントを貰ったので、特に反論もせずにCloseしました。

参考情報