簡體   English   中英

帶有Springboot應用程序的Docker Swarm

[英]Docker Swarm with springboot app

我目前正在嘗試在3個虛擬機中使用docker swarm部署應用程序,我正在通過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"]

和我的碼頭工人組成是:

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:穩定,向我正確顯示了端口8080上的節點,但是當我想向通過以下方式提供的服務的URL:

卷曲-4 http://192.168.99.100:8082/colpensiones/msg

錯誤出現:curl:(7)無法連接到192.168.99.100端口8082:拒絕連接。

來自服務的圖像是:

在此處輸入圖片說明 在此處輸入圖片說明

我正在關注Docker教程:入門https://docs.docker.com/get-started/part5/

希望您的幫助,謝謝

我遇到了同樣的問題,但是在將spring boot服務的端口號更改為

ports:
  - "8082:8080"

實際的問題是:默認情況下,tomcat服務器偵聽端口8080而不是撰寫文件中提到的端口。 我也增加了內存限制。

僅供參考:在服務中運行的任務/容器的內部端口對於其他容器也可以是相同的(:),因此提及Spring Boot容器和可視化容器的8080(內部端口)不是問題。

我的申請也遇到了同樣的問題。 我通過從Dockerfile => -Djava.security.egd=file:/dev/./urandom java cmdline屬性中刪除來重建了我的應用程序,它開始為我工作。

請檢查當時為您提供服務的“ docker服務日志#containerid#”(以查看容器ID運行命令“ docker stack ps#servicename#”),並查看是否看到任何錯誤消息。

PS:我最近開始使用docker,所以可能不是專家建議。 以防萬一,如果有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM