紹介する内容
- circleciに構築したlocalstackコンテナをデバックする方法共有です
- Primaryコンテナはpythonコンテナです、localstackコンテナはPrimaryコンテナではありません
- circleciの
docker executor
を使います
結論
-
circleciをlocalで動かしているものはdockerです。よってPrimaryコンテナではないコンテナに
docker attach
で張り付くとコンテナの出力が見えます -
しかし、circleciのコンテナはコンテナの名前が指定できません
- このせいで人がコンテナ名を手動で確認した後に、
docker attach 手動で確認したコンテナ名
することが最善です - こちらが使用可能なオプションですが、コンテナ名を設定するオプションはなさそうです
- このせいで人がコンテナ名を手動で確認した後に、
紹介始めます
当記事のプロジェクトはcircleciにlocalstackをterraformで構築する
記事のプロジェクトをそのまま使用中です。
circleciにlocalstackをterraformで構築する詳しい内容はこちらで確認できます。
https://qiita.com/cheekykorkind/items/8da683934d7a3233d724
構築実験環境
Linux
- CentOS Linux release 7.7.1908 (Core)
Docker Compose
- VERSION : 1.24.1
Docker
- VERSION : 19.03.5
local circleciをインストールします
ディレクトリ構成
全体ソースコードは https://github.com/cheekykorkind/circleci-localstack で確認できます
circleciで実行される作業の順番を伝えます。
-
circleci local execute --job test
でcircleciをlocal実行します - circleci/python:3.7-buster-nodeコンテナ(Primaryコンテナ)が作られます
- localstackコンテナが作れます
- Primaryコンテナのstepが実行されます
-
name: Wait for localstack
stepで少なくともportが開けるまで待ちます - pythonのpackageをディレクトリ
/home/circleci/project/sam-lambda/hello_world/packages
に指定し、インストールします -
$LAMBDA_ZIP_PATH
に置きます - terraformをインストールしあます
- terraformファイルがいる
$TERRAFORM_PATH
に移動します - terraform initします
- terraform applyします。同時にterraformでlambdaのzipパス(
$LAMBDA_ZIP_PATH
)とcircleciのデフォルトhost名を入れたを$COMMON_NETWORK
を渡します - terraformによってlambdaが作られます
-
上で伝えた実行の内、Primaryコンテナのstepが実行されます
の前までずっと手動でdocker ps
を打つことになります。
デバック方法を見せます
これで、localstackコンテナの出力が見えるようになって、circleciでlocalstackを使う時に
localstackのエラーなのか、localstackがそもそも起動してなかったのかが確認できます。