以前はできていたような気もするのですがMacOSがventuraになってからQEMUとの相性が良くないらしく、colima上でlistenされているポートにMacOS側からアクセスするにはdocker serviceを--publish mode=host
で起動する必要があります。
これには罠があって、mode=host
なサービスは各docker node内にレプリカ数が1つまでしかlistenするポートが競合して起動しません。Swarmクラスタを構成してノード数を増やせば一応回避できそうですが、これまたventureになってから上手く動かないようです。おのれ、ventura...
で、現状colimaで複数のレプリカを動かすにはMac側から直接接続することは諦めてmode=ingress
で起動するしかないのですが、直接接続がだめならproxyを介して間接的に接続してやればokです。例えば以下のようにalpine/socat
を使ってproxyサービスを立ち上げます。
docker service create --name amqv-proxy --network {your-network} \
--publish mode=host,target={port-on-mac},published={port-on-mac} \
alpine/socat tcp-listen:{port-on-mac},fork,reuseaddr tcp:{service-name}:{service-port}
proxyは一つあれば十分なのでポート番号の競合問題はおきません。あとは対象サービスに接続するつもりでMac側からproxyに接続すればokです。これでレプリカ数>=2な環境の検証ができますね