【发布时间】:2018-12-05 18:44:18
【问题描述】:
我目前正在尝试在 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) 无法连接到 192.168.99.100 端口 8082: 拒绝连接。
来自服务的图像是:
我正在关注 docker 教程:入门 https://docs.docker.com/get-started/part5/
希望大家帮忙,谢谢
【问题讨论】:
-
你能验证容器正在那个确切的端口上运行吗?
docker exec进入该应用程序正在运行的 swarm 任务并在 localhost:8082 上运行相同的 curl 命令(可能需要在容器中安装 curl)
标签: docker spring-boot docker-swarm