docker - 带有 springboot 应用程序的 Docker Swarm
问题描述
我目前正在尝试在 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:stable,在端口 8080 上正确显示节点,但是当我想发出请求时服务的 url 方式如下:
卷曲 -4 http://192.168.99.100:8082/colpensiones/msg
出现错误: curl: (7) Failed to connect to 192.168.99.100 port 8082: Refused connection。
来自服务的图像是:
我正在关注 docker 教程:入门https://docs.docker.com/get-started/part5/
我希望你的帮助,谢谢
解决方案
我有同样的问题,但在将 spring boot 服务的端口号更改为
ports:
- "8082:8080"
实际问题是:tomcat 服务器默认侦听端口 8080,而不是撰写文件中提到的端口。我也增加了内存限制。
仅供参考:服务中运行的任务/容器的内部端口对于其他容器也可以相同(:),因此为 Spring Boot 容器和可视化容器提及 8080(内部端口)不是问题。
推荐阅读
- scala - 生成的播放 json 隐式实例导致 StackOverflowError
- sql - 一种正确的加入
- c - 如何将二进制字符串转换为无符号整数?
- azure - 如何使用 Azure PowerShell 获取 Azure KeyVault 的访问策略
- python - 如果列中不存在值,则忽略条件
- mongodb - 将本地 mongodump 迁移到 docker 容器中
- javascript - Gatsby 首次加载未设置样式的网站(刷新后又看起来不错)
- apache - nginx 背后的 Apache 给出了错误的虚拟主机
- c# - 同一个表中的 nHibernate HasMany 导致 StackOverflowException
- sql - 可以告诉我创建用户的错误吗?