Postgresql 从docker compose启动的容器无法连接到其他容器
我有一个像这样的Postgresql 从docker compose启动的容器无法连接到其他容器,postgresql,docker,docker-compose,rabbitmq,Postgresql,Docker,Docker Compose,Rabbitmq,我有一个像这样的docker compose version: '3.7' networks: iam_network: external: name: foundation_iam rdc_network: name: rdcstu3_net services: rdcdeploy: restart: "no" container_name: rdcdeploy build: context: ./rdcdeploy
docker compose
version: '3.7'
networks:
iam_network:
external:
name: foundation_iam
rdc_network:
name: rdcstu3_net
services:
rdcdeploy:
restart: "no"
container_name: rdcdeploy
build:
context: ./rdcdeploy
args:
- build_version
- build_type
image: rdcdeploy:$build_version
volumes:
- ./cfg:/cfg
networks:
- rdc_network
rdcrabbitmq:
restart: "no"
container_name: rdcrabbitmq
build:
context: ./rabbitmq
args:
- build_version
- build_type
image: rdcrabbitmq:$build_version
ports:
- "5772:5672"
- "15772:15672"
depends_on:
- rdcdeploy
volumes:
- ./cfg:/cfg
networks:
- rdc_network
rdcdb:
restart: "no"
container_name: rdcdb
build:
context: ./postgres
args:
- build_version
- build_type
image: rdcpostgres:$build_version
ports:
- "5532:5432"
depends_on:
- rdcdeploy
volumes:
- ./cfg:/cfg
networks:
- rdc_network
rdcdbdeploy:
restart: "no"
container_name: rdcdbdeploy
build:
context: ./rdcdbdeploy
args:
- build_version
- build_type
image: rdcdbdeploy:$build_version
depends_on:
- rdcdb
volumes:
- ./cfg:/cfg
networks:
- rdc_network
rihapp:
restart: "no"
container_name: rihapp
build:
context: ./rihserver
args:
- build_version
- build_type
image: rihapp:$build_version
ports:
- "9090:8080"
depends_on:
- rdcrabbitmq
- rdcdb
volumes:
- ./cfg:/cfg
networks:
- iam_network
- rdc_network
subscription_scheduler:
restart: "no"
container_name: subscription_scheduler
build:
context: ./subscription
args:
- build_version
- build_type
image: subscription_scheduler:$build_version
depends_on:
- rdcrabbitmq
- rdcdb
- rihapp
volumes:
- ./cfg:/cfg
networks:
- iam_network
- rdc_network
environment:
- rdc.subscription.instanceNumber=0
subscription_processor:
restart: "no"
container_name: subscription_processor
build:
context: ./subscription
args:
- build_version
- build_type
image: subscription_processor:$build_version
depends_on:
- rdcrabbitmq
- rdcdb
- rihapp
volumes:
- ./cfg:/cfg
networks:
- iam_network
- rdc_network
environment:
- rdc.subscription.instanceNumber=1
rdcsmoketest:
restart: "no"
container_name: rdcsmoketests
build:
context: ./rdcdeploy
image: rdcdeploy:$build_version
volumes:
- ./cfg:/cfg
depends_on:
- rihapp
networks:
- iam_network
- rdc_network
entrypoint:
- wait-for-rihapp.sh
- rdcdeploy
command: ["-x", "-z", "/cfg", "-c", "/cfg/config.yml", "docker"]
我使用docker compose up启动它,它显示容器已启动
eedaa5e11a0e rdicdeploy:3.3.0.1 "wait-for-rihapp.sh…" 2 minutes ago Up 38 seconds rdicsmoketests
9178355cbca7 subscription_scheduler:3.3.0.1 "./wait-for-env.sh /…" 2 minutes ago Up 38 seconds subscription_scheduler
ae24a4b76f3e subscription_processor:3.3.0.1 "./wait-for-env.sh /…" 2 minutes ago Up 38 seconds subscription_processor
5f789ae74ef2 rihapp:3.3.0.1 "./wait_for_rdic_db.s…" 2 minutes ago Up 39 seconds 0.0.0.0:9090->8080/tcp rihapp
698b26d0ca37 rdicdbdeploy:3.3.0.1 "wait-for-env-db.sh …" 2 minutes ago Up 39 seconds rdicdbdeploy
592cb850f5b9 rdicrabbitmq:3.3.0.1 "wait-for-env.sh /cf…" 2 minutes ago Up 39 seconds 4369/tcp, 5671/tcp, 15671/tcp, 25672/tcp, 0.0.0.0:5772->5672/tcp, 0.0.0.0:15772->15672/tcp rdicrabbitmq
505a0f36528f rdicpostgres:3.3.0.1 "wait-for-env.sh /cf…" 2 minutes ago Up 39 seconds 0.0.0.0:5532->5432/tcp
但由于某些原因,没有容器能够连接rabbitmq或postgres
rabbitmq
的日志显示它们已启动
2020-07-24 10:32:13.226 [info] <0.370.0> Running boot step direct_client defined by app rabbit
2020-07-24 10:32:13.226 [info] <0.370.0> Running boot step os_signal_handler defined by app rabbit
2020-07-24 10:32:13.226 [info] <0.489.0> Swapping OS signal event handler (erl_signal_server) for our own
2020-07-24 10:32:13.262 [info] <0.539.0> Management plugin: HTTP (non-TLS) listener started on port 15672
2020-07-24 10:32:13.262 [info] <0.645.0> Statistics database started.
2020-07-24 10:32:13.262 [info] <0.644.0> Starting worker pool 'management_worker_pool' with 3 processes in it
2020-07-24 10:32:13.480 [info] <0.8.0> Server startup complete; 3 plugins started.
* rabbitmq_management
* rabbitmq_web_dispatch
* rabbitmq_management_agent
completed with 3 plugins.
但是应用程序正在尝试连接5772
,但是rabbitmq和postgres的连接被拒绝,这也表明
psql: error: could not connect to server: could not connect to server: Connection refused
rihapp | Is the server running on host "localhost" (127.0.0.1) and accepting
rihapp | TCP/IP connections on port 5532?
它还生成.env
文件,其中包含应用程序的环境变量,如
DATABASE_URL=postgres://rdc:rdc@localhost:5532/pg_db
spring.datasource.url=jdbc:postgresql://localhost:5532/pg_db
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5772
可能有什么问题?这感觉像是某种网络问题。似乎您已将客户端配置为与localhost:X
上的服务器联系,我是否正确
在这种情况下,您需要知道docker compose中的容器具有不同的网络cGroup,并且能够通过网桥接口相互连接。这意味着在容器中,您应该使用rdcrabbitmq:5672
而不是localhost:5772
似乎您已将客户端配置为与localhost:X
上的服务器联系,我是否正确
在这种情况下,您需要知道docker compose中的容器具有不同的网络cGroup,并且能够通过网桥接口相互连接。这意味着在容器中,应该使用rdcrabbitmq:5672
而不是localhost:5772
是的,我将主机设置为localhost@lapots在这种情况下,容器中的客户端应该以服务的名义到达服务,例如rdcrabbitmq:5672
或rcdb:5432
所以我应该在docker compose中将它们设置为值o container\u name?我会使用它们的服务块的名称,并删除container\u name:
选项。我应该使用什么端口?在env
文件中,它使用jdbc:postgresql://rdcdb:5532/pg_db
但仍然无法连接。虽然我可以使用0.0.0.0:5532
Yes进行外部连接,但我将主机设置为localhost@lapots在这种情况下,容器中的客户端应该以服务的名义到达服务,例如rdcrabbitmq:5672
或rcdb:5432
所以我应该在docker compose中将它们设置为值o container\u name?我会使用它们的服务块的名称,并删除container\u name:
选项。我应该使用什么端口?在env
文件中,它使用jdbc:postgresql://rdcdb:5532/pg_db
但仍然无法连接。虽然我能够使用Docker中的0.0.0.0:5532
localhost
进行外部连接,但它几乎总是表示“这个容器”。描述网络环境以及如何在容器之间连接。localhost
在Docker中几乎总是指“此容器”。描述网络环境以及如何在容器之间连接。
DATABASE_URL=postgres://rdc:rdc@localhost:5532/pg_db
spring.datasource.url=jdbc:postgresql://localhost:5532/pg_db
spring.rabbitmq.host=localhost
spring.rabbitmq.port=5772