CircleCIで要dockerのcdk deployする
cdk deploy
でdockerが必要になることがあります。(少なくともlambdaのpythonランタイムのデプロイでは必要だった)
CircleCIで要dockerのcdk deploy
を実現しようとしてハマったので方法を共有します。
Executor Type
Executor Typeはmachine
を選択します。
私は既存のデプロイ環境を元にExecutor Typeをdocker
として、実現方法を探し始めました。
以下の2つのアプローチをしましたが、どちらも中々うまく行かず断念しました。
ダメ1
- Executor Typeは
docker
- setup_remote_dockerを使う
- AmazonLinuxベースのdockerを実行環境として、Docker in Docker(以下dind)できるようにしてトライ。
だめな理由
setup_remote_dockerを使って立ち上がるdockerに、ディレクトリのマウントが出来ないことに起因するcdk deployの失敗。(たぶん)
ダメ2
- ダメ1を元に、ディレクトリのマウントも自由にできるという ECRにdocker:dindベースのイメージを作りそれをexecutorとする方法。
だめな理由
- このイメージを実行する時に
--privileged
しないと、dindが実現できないと思われる - しかし
--previledged
を指定してコンテナ(CircleCIの実行環境)を起動する方法がわからなくてCircleCI上でdind出来なかった
具体的な実現方法
実際はもっと複雑ですが、要素だけ抜き出すとこんなconfig.ymlで実現できました。
version: 2.1
orbs:
# cdkの実行に必要
node: circleci/[email protected]
jobs:
deploy:
machine:
image: ubuntu-2004:current
steps:
- checkout
- node/install:
install-yarn: true
node-version: '16.13'
# docker使えるか確認
- run: docker info
- run: npm ci && cdk deploy
orbがあるので無理にカスタムdockerイメージを使う必要性がだいぶ少なくなっているのかもしれません。
まとめ
そもそもmachineで調べ始めたらこんな苦労はなかったんだな
Author And Source
この問題について(CircleCIで要dockerのcdk deployする), 我々は、より多くの情報をここで見つけました https://qiita.com/sekitaka_1214/items/9b8db436dfa13e7b0c37著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .