Open1

AWS CDKの`cdk.out`ディレクトリがめちゃくちゃ容量を食ってる

mitsu_hmitsu_h

事象

AWS CDKのsynth実行時に生成されるcdk.outディレクトリが何百GBという大きさになっていた。

原因

今回ECR Repositoryを定義していたのだが、imageのbuild contextがcdk.outに丸々コピーされる。.dockerignoreを正しく設定出来ていなかった影響で、.venv__pycache__等までcdk.outにコピーされていたせいで容量が膨れ上がっていた。なので.dockerignoreは正しく定義しよう

なんでちゃんと設定出来てなかったのか

.dockerignoreファイルは公式にも記載があるが、build contextの直下に配置しないと読んでくれず、下階層のものは参照されない。
例として、repository/srcをbuild contextとした場合、repository/src/.dockerignoreに配置したものしか参照されない。

repository
└── src/ # build contextのディレクトリ
    ├── module/
    │   ├── .venv
    │   ├── Dockerfile
    │   ├── docker-compose.yml
    │   └── .dockerignore # ←こっちじゃダメ!
    ├── utils/
    │   └── src # moduleから参照したい
    └── .dockerignore # build contextのディレクトリに置く必要がある

更に、.gitignoreと異なり、ディレクトリ名だけでは無視してくれず、ちゃんと階層を指定するか、ワイルドカードで指定が必要。cdkの知識というより、こっち側の知識が不足してた…

.venv # src/.venvしか無視してくれない
module/.venv # OK
**/.venv # こうすれば、直下すべてのを無視してくれる