Образы из Docker не работают должным образом при запуске из команды Docker Run - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько микроуслуг, построенных с использованием Spring boot, которые

  • Обнаружение служб
  • Шлюз или Прокси-сервер Zuul
  • Бэкэнд-приложение, которое обслуживаетAPI REST

Следующее является частью файла 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 run -itd -p 8080:8080 _image_Id_, микросервис не может подключиться к реестру служб.Там написано: Отказ в соединении

Ребята, есть ли у вас какие-либо соображения по этому поводу?Дайте мне знать, если вам нужна другая информация.Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

попробуйте установить --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}
0 голосов
/ 07 февраля 2019

Ниже должно быть исправлено свойство:

   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    
...