AWS
docker
LocalStack

localstack を Docker on Mac 上で動かす

More than 1 year has passed since last update.

Docker on Mac のインストール

https://docs.docker.com/docker-for-mac/install/ から入手できます。
このドキュメントにしたがって、インストールします。

localstack パッケージの更新

pip でインストールしたパッケージは少し前まで、docker イメージが atlassianlabs/localstack になっていましたが、最近になって localstack/localstack に変更されています。

localstack パッケージは 最新版に更新しておいた方がよいでしょう。

pip install -U localstack

localstack を Docker on Mac 上で起動

Docker on Mac が動くようになったら、localstack--docker オプションをつけて起動します。
このとき、Docker for Mac の設定の Proxies のところで No proxy を選択して、プロキシを使用にないようにしておくことを推奨します。

$ localstack start --docker

docker イメージを自動的にダウンロードして、コンテナが起動されます。

Ready. が表示されれば、ローカル起動と同じように使用できます。

docker run で起動していますので、Ctrl-P Ctrl-Q でデタッチできます。

停止するときは、docker ps -a でコンテナIDを確認して、

docker stop コンテナID

で停止します。

再開するときは、

docker restart コンテナID

です。

localstack start --docker を実行すると、もうひとつ新しいコンテナを作ってしまいます。

WARNING:infra.pyc:Service "kinesis" not yet available, retrying... のあとエラーになる場合

Docker コンテナで起動したとき、次のようなエラーが出ることがあります。

WARNING:infra.pyc:Service "kinesis" not yet available, retrying...
ERROR:infra.pyc:Error checking state of local environment (after some retries): Traceback (most recent call last):
File "/opt/code/localstack/localstack/services/infra.py", line 285, in check_infra
raise e
TypeError: 'NoneType' object has no attribute '__getitem__'
Traceback (most recent call last):
File "bin/localstack", line 79, in <module>
infra.start_infra()
File "/opt/code/localstack/localstack/services/infra.py", line 359, in start_infra
raise e
TypeError: 'NoneType' object has no attribute '__getitem__'

このようなときは Docker for Mac の設定の Proxies のところで No proxy を選択して、プロキシを使用にないようにしてみてください。

プロキシを使う設定なっていると、Docker 内で起動した localstack がモックサーバの起動チェックをするときに、プロキシ経由でアクセスして、チェックに失敗することがあります。