docker-vernemq
docker-vernemq copied to clipboard
Incompatibility with network_mode: "host"
I'm trying to use network_mode: "host"
to be able to cluster together 2 vernemq containers running on different hosts.
If an alternative for clustering 2 vernemq containers running on different hosts exists I'm happy to listen.
$ cat docker-compose.yml
version: '3.6'
services:
vernemq2:
container_name: vernemq
image: vernemq/vernemq:1.10.4.1
environment:
- DOCKER_VERNEMQ_ACCEPT_EULA=yes
- DOCKER_VERNEMQ_USER_ADMIN=${ADMIN_PASSWORD:?Admin password not specified}
- DOCKER_VERNEMQ_USER_DEVICE=${DEVICE_PASSWORD:?Device password not specified}
- DOCKER_VERNEMQ_DISTRIBUTED_COOKIE=something_random
- DOCKER_VERNEMQ_LOG.console.level=debug
- DOCKER_VERNEMQ_LISTENER.tcp.allowed_protocol_versions=5
- DOCKER_VERNEMQ_LISTENER.tcp.proxy_protocol=off
- DOCKER_VERNEMQ_LISTENER.ssl.allowed_protocol_versions=5
- DOCKER_VERNEMQ_LISTENER.ssl.cafile=/run/secrets/cacerts
- DOCKER_VERNEMQ_LISTENER.ssl.certfile=/run/secrets/cert
- DOCKER_VERNEMQ_LISTENER.ssl.keyfile=/run/secrets/key
- DOCKER_VERNEMQ_LISTENER.ssl.default=${IP_ADDRESS:?IP address not specified}:8883
- DOCKER_VERNEMQ_LISTENER.ssl.require_certificate=off # set this to 'on' to require client certificates
- DOCKER_VERNEMQ_LISTENER.ssl.use_identity_as_username=off
- DOCKER_VERNEMQ_LISTENER.vmq.clustering=${IP_ADDRESS:?IP address not specified}:44053
- DOCKER_VERNEMQ_ERLANG.distribution.port_range.minimum=6000
- DOCKER_VERNEMQ_ERLANG.distribution.port_range.maximum=6099
secrets:
- source: cacerts
- source: cert
- source: key
ulimits:
nproc: 65536
nofile: 65536
network_mode: "host"
secrets:
cacerts:
file: ./cacerts.pem
cert:
file: ./cert.pem
key:
file: ./key.pem
and I get:
$ docker-compose up
Starting vernemq ... done
Attaching to vernemq
vernemq | Device "eth0" does not exist.
vernemq | Password:
vernemq | Reenter password:
vernemq | Password:
vernemq | Reenter password:
vernemq | 17:31:50.925 [error] Error generating configuration in phase transform_datatypes
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.ws.default
vernemq | 17:31:50.925 [error] ":8080" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.http.metrics
vernemq | 17:31:50.925 [error] ":8888" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.vmq.clustering
vernemq | 17:31:50.925 [error] ":44053" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.tcp.default
vernemq | 17:31:50.926 [error] ":1883" cannot be converted to a(n) IP
vernemq | configuration error, exit
vernemq | 17:31:50.925 [error] Error generating configuration in phase transform_datatypes
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.ws.default
vernemq | 17:31:50.925 [error] ":8080" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.http.metrics
vernemq | 17:31:50.925 [error] ":8888" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.vmq.clustering
vernemq | 17:31:50.925 [error] ":44053" cannot be converted to a(n) IP
vernemq | 17:31:50.925 [error] Error transforming datatype for: listener.tcp.default
vernemq | 17:31:50.926 [error] ":1883" cannot be converted to a(n) IP
vernemq exited with code 0
Same docker-compose.yml
plus section that exposes ports works fine if I remove the host
network_mode
and IP_ADDRESS
is 0.0.0.0
.
$ docker --version Docker version 19.03.13, build 4484c46d9d
$ docker-compose --version docker-compose version 1.27.2, build 18f557f9