Open1
AWS CDKの`cdk.out`ディレクトリがめちゃくちゃ容量を食ってる
事象
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 # こうすれば、直下すべてのを無視してくれる