Nestcloud กับ docker-compose กงสุลโคร-การบริการการเชื่อมต่อถูกปฏิเสธ

0

คำถาม

ฉัน dockerize เป็น nestcloud โปรแกรมเกี่ยวกับกงสุลและกลุ่มของ microservices. อย่างไรก็ตามฉันไม่สามารถเริ่มการทำงานของทุนของ microservice(สำหรับตัวอย่างทดสอบบริการด้านล่างอย่างที่มันดูเหมือนกงสุลก็คือปฏิเสธที่มี tcp การเชื่อมต่อ:

[Nest] 1   - 11/23/2021, 9:47:34 PM   [NestFactory] Starting Nest application... 
[Nest] 1   - 11/23/2021, 9:50:56 PM   [ConfigModule] Unable to initial ConfigModule, retrying...
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] ServiceRegistryModule dependencies initialized +114ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] LoggerModule dependencies initialized +0ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] BootModule dependencies initialized +0ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] HttpModule dependencies initialized +6ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] AppModule dependencies initialized +2ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [InstanceLoader] ConsulModule dependencies initialized +0ms
[Nest] 1   - 11/23/2021, 9:47:34 PM   [ConfigModule] Unable to initial ConfigModule, retrying... +39ms
Error: consul: kv.get: connect ECONNREFUSED 127.0.0.1:8500

นี่คือของฉัน docker-compose.language:

version: "3.2"

services:
  test-service:
    build:
      context: .
      dockerfile: apps/test-service/Dockerfile
      args:
        NODE_ENV: development
    image: "test-service:latest"
    restart: always
    depends_on:
      - consul
    environment:
      - CONSUL_HOST=consul
      - DISCOVERY_HOST=localhost
    ports:
      - 50054:50054

  consul:
    container_name: consul
    ports:
      - "8400:8400"
      - "8500:8500"
      - "8600:53/udp"
    image: consul
    command: ["agent", "-server", "-bootstrap", "-ui", "-client", "0.0.0.0"]
    labels:
      kompose.service.type: nodeport
      kompose.service.expose: "true"
      kompose.image-pull-policy: "Always"

ที่ Dockerfile สำหรับของฉัน microservice ทดสอบบริการ:

FROM node:12-alpine
ARG NODE_ENV=production
ENV NODE_ENV $NODE_ENV

RUN mkdir -p /usr/src/app
ADD . /usr/src/app

WORKDIR /usr/src/app

RUN yarn global add @nestjs/cli

RUN yarn install --production=false

# Build production files
RUN nest build test-service

# Bundle app source
COPY . .

EXPOSE 50054
CMD ["node", "dist/apps/test-service/main.js"]

และ bootstrap-พัฒนาการ.language ที่ถูกใช้โดย nestcloud ที่รถเรียกโปรแกรม microservice

consul:
  host: localhost
  port: 8500
config:
  key: mybackend/config/${{ service.name }}
service:
  discoveryHost: localhost
  healthCheck:
    timeout: 1s
    interval: 10s
    tcp: ${{ service.discoveryHost }}:${{ service.port }}
  maxRetry: 5
  retryInterval: 5000
  tags: ["v1.0.0", "microservice"]
  name: io.mybackend.test.service
  port: 50054
loadbalance:
  ruleCls: RandomRule
logger:
  level: info
  transports:
    - transport: console
      level: debug
      colorize: true
      datePattern: YYYY-MM-DD h:mm:ss
      label: ${{ service.name }}
    - transport: file
      name: info
      filename: info.log
      datePattern: YYYY-MM-DD h:mm:ss
      label: ${{ service.name }}
      # 100M
      maxSize: 104857600
      json: false
      maxFiles: 10
    - transport: dailyRotateFile
      filename: info.log
      datePattern: YYYY-MM-DD-HH
      zippedArchive: true
      maxSize: 20m
      maxFiles: 14d

ฉันสามารถเรียบร้อยแล้ต่อเนื่องที่กงสุลก่อนตู้คอนเทนเนอร์จาก microservice ตู้คอนเทนเนอร์กับ:

docker exec -ti test-service ping consul

คุณเห็นอะไรผิดปกติกับของฉัน config และถ้างั้นคุณสามารถได้โปรดบอกว่าฉันสามารถทำให้มันใช้ได้ได้มั้ย?

1

คำตอบที่ดีที่สุด

0

คุณพยายามเพื่อเข้าใช้งานกงสุลกับ localhost จาก NestJs ให้บริการนี้เป็นเรื่องตู้คอนเทนเนอร์,มันเป็น localhost มันต่างออกมาจากกงสุล localhost,คุณต้องการเพื่อเข้าใช้งาน consule กับตู้คอนเทนเนอชื่อเป็นเครื่อง

เปลี่ยนเครื่องกงสุลต้อง ${{ CONSUL_HOST }} ใน bootstrap-development.yaml.

CONSUL_HOST คือกำหนดไว้อยู่ docker-compose.yaml: CONSUL_HOST=consul

คนใหม่ bootstrap-development.yaml:

consul:
  host: ${{CONSUL_HOST}}
  port: 8500
...

และสร้างใหม่ที่ตู้คอนเทนเนอร์กับ: docker-compose --project-directory=. -f docker-compose.dev.yml up --build

2021-12-05 18:06:28

ใช่,ดูเหมือนจะเป็นอย่างนั้นนะ ขอบคุณ!
Bruno Paris

ถ้ามันช่วยคุณ,โปรดรับคำตอบได้โดยการคลิกที่วี
Raz Luvaton

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่