Spring 从Docker运行命令运行时,Docker compose中的图像未按预期工作
我使用SpringBoot构建了一些微服务,它们是Spring 从Docker运行命令运行时,Docker compose中的图像未按预期工作,spring,spring-boot,docker,docker-compose,microservices,Spring,Spring Boot,Docker,Docker Compose,Microservices,我使用SpringBoot构建了一些微服务,它们是 服务发现 网关服务器或Zuul代理服务器 服务RESTAPI的后端应用程序 以下是docker-compose.yml文件的一部分 version: '3.7' services: st-service-registry: build: context: service-registry/ args: VERSION: ${VERSION} restart: on-failure
- 服务发现
- 网关服务器或Zuul代理服务器
- 服务RESTAPI的后端应用程序
version: '3.7'
services:
st-service-registry:
build:
context: service-registry/
args:
VERSION: ${VERSION}
restart: on-failure
image: st/service-registry:${VERSION}
container_name: st-service-registry
ports:
- 8180:8180
tty: true
networks:
- st-network
st-backend:
build:
context: backend/
args:
VERSION: ${VERSION}
restart: on-failure
image: st/backend:${VERSION}
environment:
eureka.client.serviceUrl.defaultZone: http://st-service-registry:8180/eureka
depends_on:
- mongo
- redis
- st-service-registry
- st-gateway-server
volumes:
- /etc/timezone:/etc/timezone
- /etc/localtime:/etc/localtime
networks:
- st-network
st-gateway-server:
build:
context: gateway-server/
args:
VERSION: ${VERSION}
restart: on-failure
image: st/gateway-server:${VERSION}
container_name: st-gateway-server
ports:
- 8080:8080
depends_on:
- st-service-registry
networks:
- st-network
mongo:
image: mongo
container_name: mongo
ports:
- 27017:27017
volumes:
- ${MONGO_DB_DATA_LOCATION}:/data/db
restart: on-failure
networks:
- st-network
redis:
image: redis
container_name: redis
ports:
- 6379:6379
restart: on-failure
networks:
- st-network
networks:
st-network:
driver: bridge
当我使用docker compose-up--build运行整个堆栈时,一切都很完美。我可以看到docker的图片,我可以运行微服务之类的东西。但是当我尝试使用docker run-itd-p8080:8080\u image\u Id\u运行单个映像时,
微服务无法连接到服务注册表。它说,连接被拒绝
你们有线索吗?如果您需要任何其他信息,请告诉我。提前感谢。必须更正以下属性:
environment:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://st-service-registry:8180/eureka
示例docker-compose.yml
version: '3.7'
services:
eureka-server:
image: barathece91/eureka-server-demo
ports:
- "8081:8081"
networks:
- st-network
eureka-client-app1:
image: barathece91/eureka-client-demo
ports:
- "8082:8082"
networks:
- st-network
depends_on:
- eureka-server
environment:
EUREKA_CLIENT_SERVICEURL_DEFAULTZONE: http://eureka-server:8081/eureka
networks:
st-network:
driver: bridge
尝试将要生成的所有容器的--name设置为容器名称,将--hostname设置为容器名称
关键是当您手动创建容器时—它将设置自动生成的容器名称或主机名
服务通过名称(容器名称)相互查找
例如:
docker run -d --name st-service-registry \
--hostname st-service-registry \
--network st-network \
--restart=on-failure \
-p 8180:8180 \
st/service-registry:${VERSION}
docker run -d --name redis \
--hostname redis \
--network st-network \
--restart=always \
-p 6379:6379 \
redis
docker run -d --name mongo \
--hostname mongo \
--network st-network \
--restart=always \
-p 27017:27017 \
mongo
docker run -d --name st-gateway-server \
--hostname st-gateway-server \
--network st-network \
--restart=on-failure \
-p 8080:8080 \
st/gateway-server:${VERSION}
docker run -d --name st-service-registry \
--hostname st-service-registry \
-e eureka.client.serviceUrl.defaultZone: http://st-service-registry:8180/eureka \
--network st-network \
-v /etc/timezone:/etc/timezone \
-v /etc/localtime:/etc/localtime \
st/backend:${VERSION}
谢谢您的回答,但是当我使用docker compose时,这个eureka.client.serviceUrl.defaultZone运行良好。我遇到的问题是当我手动运行每个容器时。感谢您的回答,让我试试这个。我仍然有相同的问题,它仍然说连接被拒绝:(尝试执行以下命令以查看计算机是否可访问。
docker-run--rm-st/backend:$VERSION-ping-st-service-registry
我尝试了docker-run--rm-st/backend:$VERSION-ping-st-service-registry
仍然拒绝相同的连接。请访问聊天区。)