[英]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.