I am trying to deploy each service as separate docker container. All containers starts fine but when I tried to reach http://localhost:8088 I get below error
| {"level":"info","ts":"2022-04-24T11:53:39.647Z","msg":"bootstrap hosts fetched","service":"frontend","bootstrap-hostports":"0.0.0.0:6934,0.0.0.0:6935,0.0.0.0:6933","logging-call-at":"rpMonitor.go:271"}
temporal-web | [2022-04-24T11:53:41.282Z] Auth is disabled in config
temporal-web | [2022-04-24T11:53:41.860Z] will use insecure connection with Temporal server...
temporal-web | temporal-web ssl is not enabled
temporal-web | temporal-web up and listening on port 8088
temporal-web | [2022-04-24T11:53:54.846Z] OperationalError: 14 UNAVAILABLE: DNS resolution failed
temporal-web | at Object.exports.createStatusError (/usr/app/node_modules/grpc/src/common.js:91:15)
temporal-web | at Object.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:1209:28)
temporal-web | at InterceptingListener._callNext (/usr/app/node_modules/grpc/src/client_interceptors.js:568:42)
temporal-web | at InterceptingListener.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:618:8)
temporal-web | at callback (/usr/app/node_modules/grpc/src/client_interceptors.js:847:24) {
temporal-web | cause: Error: 14 UNAVAILABLE: DNS resolution failed
temporal-web | at Object.exports.createStatusError (/usr/app/node_modules/grpc/src/common.js:91:15)
temporal-web | at Object.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:1209:28)
temporal-web | at InterceptingListener._callNext (/usr/app/node_modules/grpc/src/client_interceptors.js:568:42)
temporal-web | at InterceptingListener.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:618:8)
temporal-web | at callback (/usr/app/node_modules/grpc/src/client_interceptors.js:847:24) {
temporal-web | code: 14,
temporal-web | metadata: Metadata { _internal_repr: {}, flags: 0 },
temporal-web | details: 'DNS resolution failed'
temporal-web | },
temporal-web | isOperational: true,
temporal-web | code: 14,
temporal-web | metadata: Metadata { _internal_repr: {}, flags: 0 },
temporal-web | details: 'DNS resolution failed'
temporal-web | }
temporal-web | [2022-04-24T11:53:54.951Z] OperationalError: 14 UNAVAILABLE: DNS resolution failed
temporal-web | at Object.exports.createStatusError (/usr/app/node_modules/grpc/src/common.js:91:15)
temporal-web | at Object.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:1209:28)
temporal-web | at InterceptingListener._callNext (/usr/app/node_modules/grpc/src/client_interceptors.js:568:42)
temporal-web | at InterceptingListener.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:618:8)
temporal-web | at callback (/usr/app/node_modules/grpc/src/client_interceptors.js:847:24) {
temporal-web | cause: Error: 14 UNAVAILABLE: DNS resolution failed
temporal-web | at Object.exports.createStatusError (/usr/app/node_modules/grpc/src/common.js:91:15)
temporal-web | at Object.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:1209:28)
temporal-web | at InterceptingListener._callNext (/usr/app/node_modules/grpc/src/client_interceptors.js:568:42)
temporal-web | at InterceptingListener.onReceiveStatus (/usr/app/node_modules/grpc/src/client_interceptors.js:618:8)
temporal-web | at callback (/usr/app/node_modules/grpc/src/client_interceptors.js:847:24) {
temporal-web | code: 14,
temporal-web | metadata: Metadata { _internal_repr: {}, flags: 0 },
temporal-web | details: 'DNS resolution failed'
temporal-web | },
temporal-web | isOperational: true,
temporal-web | code: 14,
temporal-web | metadata: Metadata { _internal_repr: {}, flags: 0 },
temporal-web | details: 'DNS resolution failed'
temporal-web | }
temporal-frontend | {"level":"error","ts":"2022-04-24T21:10:43.913Z","msg":"unable to bootstrap ringpop. retrying","service":"frontend","error":"join duration of 38.7320493s exceeded max 30s","logging-call-at":"ringpop.go:114","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/home/builder/temporal/common/log/zap_logger.go:142\ngo.temporal.io/server/common/membership.(*RingPop).bootstrap\n\t/home/builder/temporal/common/membership/ringpop.go:114\ngo.temporal.io/server/common/membership.(*RingPop).Start\n\t/home/builder/temporal/common/membership/ringpop.go:83\ngo.temporal.io/server/common/membership.(*ringpopMonitor).Start\n\t/home/builder/temporal/common/membership/rpMonitor.go:121\ngo.temporal.io/server/common/membership.MonitorLifetimeHooks.func1\n\t/home/builder/temporal/common/membership/fx.go:44\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).runStartHook\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:120\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).Start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:85\ngo.uber.org/fx.(*App).start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:749\ngo.uber.org/fx.withTimeout.func1\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:989"}
temporal-worker | {"level":"error","ts":"2022-04-24T21:10:47.424Z","msg":"unable to bootstrap ringpop. retrying","service":"worker","error":"join duration of 41.3403459s exceeded max 30s","logging-call-at":"ringpop.go:114","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/home/builder/temporal/common/log/zap_logger.go:142\ngo.temporal.io/server/common/membership.(*RingPop).bootstrap\n\t/home/builder/temporal/common/membership/ringpop.go:114\ngo.temporal.io/server/common/membership.(*RingPop).Start\n\t/home/builder/temporal/common/membership/ringpop.go:83\ngo.temporal.io/server/common/membership.(*ringpopMonitor).Start\n\t/home/builder/temporal/common/membership/rpMonitor.go:121\ngo.temporal.io/server/common/membership.MonitorLifetimeHooks.func1\n\t/home/builder/temporal/common/membership/fx.go:44\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).runStartHook\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:120\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).Start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:85\ngo.uber.org/fx.(*App).start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:749\ngo.uber.org/fx.withTimeout.func1\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:989"}
temporal-matching | {"level":"error","ts":"2022-04-24T21:10:51.423Z","msg":"unable to bootstrap ringpop. retrying","service":"matching","error":"join duration of 47.0306736s exceeded max 30s","logging-call-at":"ringpop.go:114","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/home/builder/temporal/common/log/zap_logger.go:142\ngo.temporal.io/server/common/membership.(*RingPop).bootstrap\n\t/home/builder/temporal/common/membership/ringpop.go:114\ngo.temporal.io/server/common/membership.(*RingPop).Start\n\t/home/builder/temporal/common/membership/ringpop.go:83\ngo.temporal.io/server/common/membership.(*ringpopMonitor).Start\n\t/home/builder/temporal/common/membership/rpMonitor.go:121\ngo.temporal.io/server/common/membership.MonitorLifetimeHooks.func1\n\t/home/builder/temporal/common/membership/fx.go:44\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).runStartHook\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:120\ngo.uber.org/fx/internal/lifecycle.(*Lifecycle).Start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/internal/lifecycle/lifecycle.go:85\ngo.uber.org/fx.(*App).start\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:749\ngo.uber.org/fx.withTimeout.func1\n\t/go/pkg/mod/go.uber.org/fx@v1.16.0/app.go:989"}
temporal-frontend | {"level":"info","ts":"2022-04-24T21:10:53.923Z","msg":"bootstrap hosts fetched","service":"frontend","bootstrap-hostports":"0.0.0.0:6933,0.0.0.0:6939,0.0.0.0:6934,0.0.0.0:6935","logging-call-at":"rpMonitor.go:271"}
temporal-worker | {"level":"info","ts":"2022-04-24T21:10:57.431Z","msg":"bootstrap hosts fetched","service":"worker","bootstrap-hostports":"0.0.0.0:6933,0.0.0.0:6939,0.0.0.0:6934,0.0.0.0:6935","logging-call-at":"rpMonitor.go:271"}
temporal-matching | {"level":"info","ts":"2022-04-24T21:11:01.392Z","msg":"bootstrap hosts fetched","service":"matching","bootstrap-hostports":"0.0.0.0:6934,0.0.0.0:6935,0.0.0.0:6933,0.0.0.0:6939","logging-call-at":"rpMonitor.go:271"}
docker-compose.yaml
version: "3.5"
services:
temporal-history:
container_name: temporal-history
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=history
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7234:7234
volumes:
- ./config/history:/etc/temporal/config
temporal-matching:
container_name: temporal-matching
depends_on:
- temporal-history
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=matching
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7235:7235
volumes:
- ./config/matching:/etc/temporal/config
temporal-frontend:
container_name: temporal-frontend
depends_on:
- temporal-matching
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=frontend
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7233:7233
volumes:
- ./config/frontend:/etc/temporal/config
temporal-worker:
container_name: temporal-worker
depends_on:
- temporal-frontend
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=worker
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7239:7239
volumes:
- ./config/worker:/etc/temporal/config
temporal-admin-tools:
container_name: temporal-admin-tools
depends_on:
- temporal-worker
environment:
- TEMPORAL_CLI_ADDRESS=temporal:7233
image: temporalio/admin-tools:${TEMPORAL_VERSION}
networks:
- temporal-network
stdin_open: true
tty: true
temporal-ui:
container_name: temporal-ui
depends_on:
- temporal-worker
environment:
- TEMPORAL_ADDRESS=temporal:7233
- TEMPORAL_CORS_ORIGINS=http://localhost:3000
image: temporalio/ui:${TEMPORAL_UI_VERSION}
networks:
- temporal-network
ports:
- 8080:8080
temporal-web:
container_name: temporal-web
depends_on:
- temporal-worker
environment:
- TEMPORAL_GRPC_ENDPOINT=temporal:7233
- TEMPORAL_PERMIT_WRITE_API=true
image: temporalio/web:${TEMPORAL_WEB_VERSION}
networks:
- temporal-network
ports:
- 8088:8088
networks:
temporal-network:
driver: bridge
name: temporal-network
version: "3.5"
services:
temporal-history:
container_name: temporal-history
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=history
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7234:7234
volumes:
- ./config/history:/etc/temporal/config
temporal-matching:
container_name: temporal-matching
depends_on:
- temporal-history
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=matching
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7235:7235
volumes:
- ./config/matching:/etc/temporal/config
temporal-frontend:
container_name: temporal-frontend
depends_on:
- temporal-matching
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=frontend
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7233:7233
volumes:
- ./config/frontend:/etc/temporal/config
temporal-worker:
container_name: temporal-worker
depends_on:
- temporal-frontend
environment:
- DB=postgresql
- DB_PORT=5432
- POSTGRES_USER=postgres
# - POSTGRES_PWD=temporal
- POSTGRES_SEEDS=host.docker.internal
- DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_sql.yaml
- SERVICES=worker
- BIND_ON_IP=0.0.0.0
- TEMPORAL_BROADCAST_ADDRESS=0.0.0.0
image: temporalio/server:latest
networks:
- temporal-network
ports:
- 7239:7239
volumes:
- ./config/worker:/etc/temporal/config
temporal-admin-tools:
container_name: temporal-admin-tools
depends_on:
- temporal-worker
environment:
- TEMPORAL_CLI_ADDRESS=temporal:7233
image: temporalio/admin-tools:${TEMPORAL_VERSION}
networks:
- temporal-network
stdin_open: true
tty: true
temporal-ui:
container_name: temporal-ui
depends_on:
- temporal-worker
environment:
- TEMPORAL_ADDRESS=temporal:7233
- TEMPORAL_CORS_ORIGINS=http://localhost:3000
image: temporalio/ui:${TEMPORAL_UI_VERSION}
networks:
- temporal-network
ports:
- 8080:8080
temporal-web:
container_name: temporal-web
depends_on:
- temporal-worker
environment:
- TEMPORAL_GRPC_ENDPOINT=temporal:7233
- TEMPORAL_PERMIT_WRITE_API=true
image: temporalio/web:${TEMPORAL_WEB_VERSION}
networks:
- temporal-network
ports:
- 8088:8088
networks:
temporal-network:
driver: bridge
name: temporal-network