我很少有使用Spring Boot构建的微服务,
以下是docker-compose.yml文件的一部分
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 -p 8080:8080 _image_Id_
运行单个映像时,微服务无法连接到服务注册表。它说连接被拒绝
你们在这方面有什么领先吗?让我知道您是否需要其他信息。预先感谢。
答案 0 :(得分:1)
以下属性必须更正:
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
答案 1 :(得分:0)
尝试为要生成的所有容器设置--name as container-name and --hostname as container-name
关键是手动创建容器时-它将设置容器名称或主机名自动生成。
服务通过名称(容器名称)互相查询
例如:
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}