spring - Docker RabbitMQ Spring java.net.UnknownHostException: rabbitmq: Name or service not known
问题描述
我试图在 Docker 上部署 Spring Server。Spring 服务器正在连接到在另一个应用程序中运行的 RabbitMQ 服务器。连接到 rabbitmq 时出现错误。我在 application.properties 中添加了主机,但没有用。比作为环境变量添加到应用程序容器中并且仍然不起作用。我还重建了 jar 并更改了图像版本。
version: '3'
services:
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672" #JMS Port
- "15672:15672" #Management Port - default user:pass = guest:guest
db:
image: mysql:5.7.22
environment:
MYSQL_ROOT_PASSWORD: "root"
MYSQL_DATABASE: "hospital"
MYSQL_PASSWORD: "root"
ports:
- "3306:3306"
networks:
- mysql_bridge
restart: always
springboot-docker-compose-app-container:
image: app-image
build:
context: ./
dockerfile: Dockerfile
environment: # Pass environment variables to the service
SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/hospital?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: root
SPRING_RABBITMQ_HOST: rabbitmq
depends_on:
- rabbitmq
- db
volumes:
- /data/VerzorgerSOAP
ports:
- "8080:8080"
networks:
- mysql_bridge
- rabbiy_mq
networks:
mysql_bridge:
rabbiy_mq:
这也是我的 application.properties
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.generate-ddl=true
spring.datasource.url = jdbc:mysql://db:3306/hospital?useSSL=false&serverTimezone=UTC&useLegacyDatetimeCode=false&allowPublicKeyRetrieval=true
spring.jpa.hibernate.ddl-auto = update
spring.datasource.username = root
spring.datasource.password = root
spring.jackson.serialization.WRITE_DATES_AS_TIMESTAMPS = false
server.ssl.enabled=false
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.properties.hibernate.globally_quoted_identifiers=true
spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
spring.rabbitmq.host= rabbitmq
这是我得到的错误
org.springframework.amqp.AmqpIOException: java.net.UnknownHostException: rabbitmq
解决方案
dockercompose 文件中 rabbitmq 的网络配置丢失:
rabbitmq:
image: rabbitmq:management
ports:
- "5672:5672" #JMS Port
- "15672:15672" #Management Port - default user:pass = guest:guest
networks:
- rabbiy_mq
@david-maze 建议的另一个解决方案是删除所有networks
推荐阅读
- ruby-on-rails - Rails - 当有多个相同物品时,从购物车中删除单个物品
- c# - C#用“替换“/” - 双引号反冲用双引号和其他
- php - 检查值是否为 x 并且存在,如果都存在则标记为完成
- python - 将模板变量传递给 HiveOperator
- python - PLY 代币优先级问题
- angular - setPath() 在 FormArray 中添加 FormGroup 不起作用
- css - 从 XSS 的角度来看,做 `element.style.setProperty` 是否安全
- excel - 复杂的每个循环
- c++ - C++结构中的回调
- python - 在与pygame碰撞期间增加图像的大小?