2
0

More than 1 year has passed since last update.

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/node@5.0.1
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で調べ始めたらこんな苦労はなかったんだな :thinking:

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0