我目前正在尝试在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"]
我的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:稳定,正确显示了端口8080上的节点,但是当我想通过以下方式对服务网址的请求:
卷曲-4 http://192.168.99.100:8082/colpensiones/msg
错误出现: curl:(7)无法连接到192.168.99.100端口8082:拒绝连接。
服务中的图像为:
我正在关注docker教程:入门https://docs.docker.com/get-started/part5/
希望您能帮上忙,谢谢
答案 0 :(得分:0)
我遇到了同样的问题,但是在将Spring Boot服务的端口号更改为
之后已解决ports:
- "8082:8080"
实际问题是:默认情况下,tomcat服务器在端口8080上侦听,而不是在撰写文件中提到的端口。我也增加了内存限制。
仅供参考:在服务中运行的任务/容器的内部端口对于其他容器也可以是相同的(:),因此提及Spring Boot容器和可视化容器的8080(内部端口)都没问题。>
答案 1 :(得分:0)
我的申请也遇到了同样的问题。我通过从Dockerfile => -Djava.security.egd=file:/dev/./urandom
的java cmdline属性中删除来重建了我的应用程序,它开始为我工作。
请检查当时请求的“ docker服务日志#containerid#”(以查看容器ID运行命令“ docker stack ps#servicename#”),并查看是否看到任何错误消息。
PS:我最近开始使用docker,所以可能不是专家建议。万一有帮助的话。