I’m unable to reproduce your issue. See below my logs. There are some initial errors, but they are caused because of the async startup of all services (e.g. PostgreSQL is still initializing when LoRa (App) Server is trying to connect). This only takes a couple of seconds:
/p/tmp $ git clone git@github.com:brocaar/loraserver-docker.git
Cloning into 'loraserver-docker'...
remote: Counting objects: 23, done.
remote: Total 23 (delta 0), reused 0 (delta 0), pack-reused 23
Receiving objects: 100% (23/23), 12.69 KiB | 12.69 MiB/s, done.
Resolving deltas: 100% (5/5), done.
/p/tmp $ cd loraserver-docker/
/p/t/loraserver-docker (master|✔) $ docker-compose up
Recreating loraserver-docker_redis_1 ... done
Recreating loraserver-docker_appserver_1 ... done
Recreating loraserver-docker_gatewaybridge_1 ... done
Recreating loraserver-docker_postgresql_1 ... done
Starting loraserver-docker_mosquitto_1 ... done
Recreating loraserver-docker_loraserver_1 ... done
Attaching to loraserver-docker_mosquitto_1, loraserver-docker_gatewaybridge_1, loraserver-docker_appserver_1, loraserver-docker_loraserver_1, loraserver-docker_redis_1, loraserver-docker_postgresql_1
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="starting LoRa Gateway Bridge" docs="https://www.loraserver.io/lora-gateway-bridge/" version=2.4.1
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="backend: TLS config is empty"
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="backend: connecting to mqtt broker" server="tcp://mosquitto:1883"
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="gateway: starting gateway udp listener" addr="0.0.0.0:1700"
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="backend: connected to mqtt broker"
appserver_1 | time="2018-06-19T07:29:13Z" level=info msg="starting LoRa App Server" docs="https://www.loraserver.io/" version=1.0.0
appserver_1 | time="2018-06-19T07:29:13Z" level=info msg="connecting to postgresql"
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullData
loraserver_1 | time="2018-06-19T07:29:13Z" level=info msg="starting LoRa Server" band=EU_863_870 docs="https://docs.loraserver.io/" net_id=010203 version=1.0.0
redis_1 | 1:C 19 Jun 07:29:14.401 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
redis_1 | 1:C 19 Jun 07:29:14.401 # Redis version=4.0.9, bits=64, commit=00000000, modified=0, pid=1, just started
redis_1 | 1:C 19 Jun 07:29:14.401 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
redis_1 | 1:M 19 Jun 07:29:14.404 * Running mode=standalone, port=6379.
redis_1 | 1:M 19 Jun 07:29:14.404 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
redis_1 | 1:M 19 Jun 07:29:14.404 # Server initialized
redis_1 | 1:M 19 Jun 07:29:14.404 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
redis_1 | 1:M 19 Jun 07:29:14.404 * Ready to accept connections
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="backend: subscribing to topic" qos=0 topic=gateway/00800000a00016b6/tx
loraserver_1 | time="2018-06-19T07:29:13Z" level=info msg="setup redis connection pool" url="redis://redis:6379"
loraserver_1 | time="2018-06-19T07:29:13Z" level=info msg="connecting to postgresql"
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="backend: subscribing to topic" qos=0 topic=gateway/00800000a00016b6/config
gatewaybridge_1 | time="2018-06-19T07:29:13Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullACK
postgresql_1 | The files belonging to this database system will be owned by user "postgres".
postgresql_1 | This user must also own the server process.
postgresql_1 |
postgresql_1 | The database cluster will be initialized with locale "en_US.utf8".
postgresql_1 | The default database encoding has accordingly been set to "UTF8".
postgresql_1 | The default text search configuration will be set to "english".
postgresql_1 |
postgresql_1 | Data page checksums are disabled.
postgresql_1 |
postgresql_1 | fixing permissions on existing directory /var/lib/postgresql/data ... ok
postgresql_1 | creating subdirectories ... ok
postgresql_1 | selecting default max_connections ... 100
postgresql_1 | selecting default shared_buffers ... 128MB
postgresql_1 | selecting dynamic shared memory implementation ... posix
loraserver_1 | time="2018-06-19T07:29:14Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:14Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | creating configuration files ... ok
loraserver_1 | time="2018-06-19T07:29:16Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:16Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | running bootstrap script ... ok
postgresql_1 | performing post-bootstrap initialization ... sh: locale: not found
postgresql_1 | No usable system locales were found.
postgresql_1 | Use the option "--debug" to see details.
loraserver_1 | time="2018-06-19T07:29:18Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:18Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:20Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
loraserver_1 | time="2018-06-19T07:29:20Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
loraserver_1 | time="2018-06-19T07:29:22Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:22Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | ok
gatewaybridge_1 | time="2018-06-19T07:29:24Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullData
gatewaybridge_1 | time="2018-06-19T07:29:24Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullACK
loraserver_1 | time="2018-06-19T07:29:24Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:24Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
gatewaybridge_1 | time="2018-06-19T07:29:25Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:44202" protocol_version=2 type=PushData
gatewaybridge_1 | time="2018-06-19T07:29:25Z" level=info msg="gateway: stat packet received" addr="172.18.0.1:44202" mac=00800000a00016b6
gatewaybridge_1 | time="2018-06-19T07:29:25Z" level=info msg="backend: publishing packet" qos=0 topic=gateway/00800000a00016b6/stats
gatewaybridge_1 | time="2018-06-19T07:29:25Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:44202" protocol_version=2 type=PushACK
postgresql_1 | syncing data to disk ...
postgresql_1 | WARNING: enabling "trust" authentication for local connections
postgresql_1 | You can change this by editing pg_hba.conf or using the option -A, or
postgresql_1 | --auth-local and --auth-host, the next time you run initdb.
postgresql_1 | ok
postgresql_1 |
postgresql_1 | Success. You can now start the database server using:
postgresql_1 |
postgresql_1 | pg_ctl -D /var/lib/postgresql/data -l logfile start
postgresql_1 |
postgresql_1 | ****************************************************
postgresql_1 | WARNING: No password has been set for the database.
postgresql_1 | This will allow anyone with access to the
postgresql_1 | Postgres port to access your database. In
postgresql_1 | Docker's default configuration, this is
postgresql_1 | effectively any other container on the same
postgresql_1 | system.
postgresql_1 |
postgresql_1 | Use "-e POSTGRES_PASSWORD=password" to set
postgresql_1 | it in "docker run".
postgresql_1 | ****************************************************
postgresql_1 | waiting for server to start....LOG: database system was shut down at 2018-06-19 07:29:23 UTC
postgresql_1 | LOG: MultiXact member wraparound protections are now enabled
postgresql_1 | LOG: database system is ready to accept connections
postgresql_1 | LOG: autovacuum launcher started
postgresql_1 | done
postgresql_1 | server started
postgresql_1 | ALTER ROLE
postgresql_1 |
postgresql_1 |
postgresql_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/001-init-loraserver_ns.sh
postgresql_1 | CREATE ROLE
loraserver_1 | time="2018-06-19T07:29:26Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:26Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | CREATE DATABASE
postgresql_1 |
postgresql_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/002-init-loraserver_as.sh
postgresql_1 | CREATE ROLE
appserver_1 | time="2018-06-19T07:29:28Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
loraserver_1 | time="2018-06-19T07:29:28Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | CREATE DATABASE
postgresql_1 |
postgresql_1 | /usr/local/bin/docker-entrypoint.sh: running /docker-entrypoint-initdb.d/003-loraserver_as_trgm.sh
postgresql_1 | CREATE EXTENSION
postgresql_1 |
postgresql_1 | LOG: received fast shutdown request
postgresql_1 | LOG: aborting any active transactions
postgresql_1 | waiting for server to shut down...LOG: autovacuum launcher shutting down
postgresql_1 | .LOG: shutting down
postgresql_1 | LOG: database system is shut down
loraserver_1 | time="2018-06-19T07:29:30Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
appserver_1 | time="2018-06-19T07:29:30Z" level=error msg="ping database error, will retry in 2s: dial tcp 172.18.0.7:5432: connect: connection refused"
postgresql_1 | done
postgresql_1 | server stopped
postgresql_1 |
postgresql_1 | PostgreSQL init process complete; ready for start up.
postgresql_1 |
postgresql_1 | LOG: database system was shut down at 2018-06-19 07:29:29 UTC
postgresql_1 | LOG: MultiXact member wraparound protections are now enabled
postgresql_1 | LOG: database system is ready to accept connections
postgresql_1 | LOG: autovacuum launcher started
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="setup redis connection pool"
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="handler/mqtt: TLS config is empty"
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="handler/mqtt: connecting to mqtt broker" server="tcp://mosquitto:1883"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="backend/gateway: TLS config is empty"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="backend/gateway: connecting to mqtt broker" server="tcp://mosquitto:1883"
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="applying database migrations"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="configuring join-server client" ca_cert= server="http://appserver:8003" tls_cert= tls_key=
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="no network-controller configured"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="applying database migrations"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="backend/gateway: connected to mqtt server"
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="backend/gateway: subscribing to rx topic" qos=0 topic=gateway/+/rx
loraserver_1 | time="2018-06-19T07:29:32Z" level=info msg="backend/gateway: subscribing to stats topic" qos=0 topic=gateway/+/stats
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="handler/mqtt: connected to mqtt broker"
appserver_1 | time="2018-06-19T07:29:32Z" level=info msg="handler/mqtt: subscribing to tx topic" qos=0 topic=application/+/node/+/tx
loraserver_1 | time="2018-06-19T07:29:33Z" level=info msg="migrations applied" count=11
loraserver_1 | time="2018-06-19T07:29:33Z" level=info msg="starting api server" bind="0.0.0.0:8000" ca-cert= tls-cert= tls-key=
loraserver_1 | time="2018-06-19T07:29:33Z" level=info msg="starting downlink device-queue scheduler"
gatewaybridge_1 | time="2018-06-19T07:29:34Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullData
gatewaybridge_1 | time="2018-06-19T07:29:34Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullACK
appserver_1 | time="2018-06-19T07:29:34Z" level=info msg="migrations applied" count=29
appserver_1 | time="2018-06-19T07:29:34Z" level=info msg="starting application-server api" bind="0.0.0.0:8001" ca-cert= tls-cert= tls-key=
appserver_1 | time="2018-06-19T07:29:34Z" level=info msg="starting join-server api" bind="0.0.0.0:8003" ca_cert= tls_cert= tls_key=
appserver_1 | time="2018-06-19T07:29:34Z" level=info msg="starting client api server" bind="0.0.0.0:8080" tls-cert=/etc/lora-app-server/certs/http.pem tls-key=/etc/lora-app-server/certs/http-key.pem
appserver_1 | time="2018-06-19T07:29:35Z" level=info msg="registering rest api handler and documentation endpoint" path=/api
gatewaybridge_1 | time="2018-06-19T07:29:44Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullData
gatewaybridge_1 | time="2018-06-19T07:29:44Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullACK
appserver_1 | time="2018-06-19T07:29:53Z" level=info msg="finished streaming call with code NotFound" error="rpc error: code = NotFound desc = object does not exist" grpc.code=NotFound grpc.method=StreamFrameLogs grpc.service=api.Device grpc.start_time="2018-06-19T07:29:53Z" grpc.time_ms=89.399 peer.address="127.0.0.1:49300" span.kind=server system=grpc
gatewaybridge_1 | time="2018-06-19T07:29:54Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullData
gatewaybridge_1 | time="2018-06-19T07:29:54Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:46817" protocol_version=2 type=PullACK
gatewaybridge_1 | time="2018-06-19T07:29:55Z" level=info msg="gateway: received udp packet from gateway" addr="172.18.0.1:44202" protocol_version=2 type=PushData
gatewaybridge_1 | time="2018-06-19T07:29:55Z" level=info msg="gateway: stat packet received" addr="172.18.0.1:44202" mac=00800000a00016b6
gatewaybridge_1 | time="2018-06-19T07:29:55Z" level=info msg="backend: publishing packet" qos=0 topic=gateway/00800000a00016b6/stats
gatewaybridge_1 | time="2018-06-19T07:29:55Z" level=info msg="gateway: sending udp packet to gateway" addr="172.18.0.1:44202" protocol_version=2 type=PushACK
loraserver_1 | time="2018-06-19T07:29:55Z" level=info msg="backend/gateway: gateway stats packet received" mac=00800000a00016b6
loraserver_1 | time="2018-06-19T07:29:55Z" level=info msg="gateway created" mac=00800000a00016b6