Nestcloud के साथ डोकर रचना कांसल माइक्रो-सेवा कनेक्शन से इनकार कर दिया

0

सवाल

मैं dockerize एक nestcloud app के साथ वाणिज्य दूत और एक गुच्छा के microservices. हालांकि, मैं कर रहा हूँ शुरू करने में असमर्थ के किसी भी microservice (उदाहरण के लिए टेस्ट-नीचे सेवा, के रूप में यह लगता है, वाणिज्य दूत मना कर रही है, किसी भी टीसीपी कनेक्शन :

[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

यहाँ मेरी डोकर रचना.yaml :

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"]

और बूटस्ट्रैप-विकास । yaml द्वारा इस्तेमाल किया 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

आप की कोशिश कर रहा का उपयोग करने के लिए कौंसुल के साथ लोकलहोस्ट से NestJs सेवा है, यह एक और कंटेनर में, यह लोकलहोस्ट से अलग है कांसल 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

यदि यह आप में मदद मिली है, कृपया स्वीकार जवाब पर क्लिक करके V
Raz Luvaton

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में