Docker Swarm с приложением Springboot - PullRequest
0 голосов
/ 27 июня 2018

Я сейчас пытаюсь развернуть приложение с Docker Swarm на 3 виртуальных машинах, я делаю это с помощью docker-compose для создания образа, мои файлы следующие:

Dockerfile:

FROM openjdk:8-jdk-alpine
WORKDIR /home
ARG JAR_FILE
ARG PORT
VOLUME /tmp
COPY ${JAR_FILE} /home/app.jar
EXPOSE ${PORT}
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/home/app.jar"]

и мой docker-compose:

version: '3'
services:
  service_colpensiones:
    build:
      context: ./colpensiones-servicio
      dockerfile: Dockerfile
      args:
        JAR_FILE: ColpensionesServicio.jar
        PORT: 8082
    volumes: 
     - data:/home 
    ports: 
     - 8082:8082
volumes: 
 data: 

Я использую команду docker-compose up -d --build для создания образа, я автоматически создаю контейнер, который позже удаляется. Для использования Docker Swarm я использую 3 машины, один менеджер и два работника, у меня есть другой файл для развертывания службы с 3 репликами

version: '3'
services:
  service_colpensiones:
    image: deploy_lyra_colpensiones_service_colpensiones
    deploy:
     replicas: 5
     resources:
       limits:
         cpus: "0.1"
         memory: 50M
     restart_policy:
       condition: on-failure
    volumes: 
     - data:/home 
    ports: 
     - 8082:8082
    networks:
      - webnet
  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints: [node.role == manager]
    networks:
      - webnet
networks:
  webnet: 
volumes: 
 data:

Пока что я думаю, что все в порядке, потому что в консоли с командой: docker service ls я вижу созданные службы, средство просмотра dockersamples / visualizer: stable, правильно показывает мне узлы на порте 8080, но когда я хочу сделать запрос к URL службы, который выглядит следующим образом:

завиток -4 http://192.168.99.100:8082/colpensiones/msg

появляется ошибка: curl: (7) Не удалось подключиться к порту 192.168.99.100. 8082: Отказано в соединении.

Изображения с сервиса:

enter image description here enter image description here

Я следую учебнику по докеру: Начало работы https://docs.docker.com/get-started/part5/

Надеюсь, ваша помощь, спасибо

Ответы [ 2 ]

0 голосов
/ 01 ноября 2018

Я также столкнулся с той же проблемой для моего приложения. Я перестроил свое приложение, удалив из Dockerfile => -Djava.security.egd=file:/dev/./urandom свойство java cmdline, и оно начало работать для меня.

Пожалуйста, отметьте "docker service logs # containerid #" (чтобы увидеть идентификаторы контейнеров, выполните команду "docker stack ps # servicename #"), которая обслуживала ваш запрос в то время, и посмотрите, нет ли каких-либо сообщений об ошибках.

PS: я недавно начал на докере, так что может быть не совет эксперта. На всякий случай, если это поможет.

0 голосов
/ 02 августа 2018

У меня была та же проблема, но исправленная после изменения номера порта службы весенней загрузки на

ports:
  - "8082:8080"

Фактическая проблема: сервер tomcat по умолчанию прослушивает порт 8080, а не порт, указанный в файле compose. Также я увеличил лимит памяти.

FYI: внутренний порт задач / контейнера, запущенных в службе, может быть одинаковым и для других контейнеров (:), поэтому упоминание 8080 (внутренний порт) для контейнера с загрузочной пружиной и контейнера визуализатора не является проблемой.

...