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 がモックサーバの起動チェックをするときに、プロキシ経由でアクセスして、チェックに失敗することがあります。