🎼
sls invoke localでdocker-composeで起動したコンテナに疎通する
Serverless Frameworkにはsls invoke localコマンドというローカル環境でLambdaをテスト実行させる便利機能がありますが、
docker-compose等で起動した別のサービス群に疎通させたい時のやりやすい方法を覚えたのでメモ✍
手順
以下のような構成であったとして、
対象のコンテナ群を起動時に、デフォルトでは ディレクトリ名_default
の形でネットワークが作成されるものと思います
ネットワーク名とコンテナ名はそれぞれ以下で確認できます
$ docker-compose up -d
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
381dcbe5155a app_default bridge local
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4104f88879b1 xxxxx "/app/docker/django/…" 36 minutes ago Up 36 minutes 0.0.0.0:3000->3000/tcp app_web_container_1
この時、Serverless Framework側にて sls invoke local
を実行する際に --docker
および --docker-arg
オプションを付けて、
起動するコンテナをdocker-composeで起動したコンテナと同じネットワークに参加させることで、 http://web_container:3000
のような形式で名前解決をすることができるようになります
# 関数内で `http://web_container:3000` に対して疎通できる
$ sls invoke local --docker --docker-arg='--network app_default' -s local -f my_function
そんだけ😌
Discussion