我有2个Spring Boot微服务应用程序,即Web应用程序和Metastore应用程序。这是我的Web应用程序的属性文件。
spring:
thymeleaf:
prefix: classpath:/static/
application:
name: web-server
profiles:
active: native
server:
port: ${port:8383}
---
host:
metadata: http://10.**.**.***:5011
用于Web应用程序的Dockerfile:
FROM java:8-jre
MAINTAINER **** <******>
ADD ./ms.console.ivu-ivu.1.0.1.jar /app/
CMD chmod +x /app/*
CMD ["java","-jar", "/app/ms.console.web-web.1.0.1.jar"]
EXPOSE 8383
元数据应用程序的Dockerfile:
FROM java:8-jre
MAINTAINER ******* <********>
ADD config/* /deploy/config/
CMD chmod +x ./deploy/config/*
COPY ./ms.metastore.1.0.1.jar /deploy/
CMD chmod +x ./deploy/ms.metastore.1.0.1.jar
CMD ["java","-jar","./deploy/ms.metastore.1.0.1.jar"]
EXPOSE 5011
我正在使用Mesos和Marathon进行集群管理。 Metastore的Marathon脚本是: -
{
"id": "/ms-metastore",
"cmd": null,
"cpus": 1,
"mem": 2000,
"disk": 0,
"instances": 0,
"acceptedResourceRoles": [
"*"
],
"container": {
"type": "DOCKER",
"docker": {
"forcePullImage": true,
"image": "*****/****:ms-metastore",
"parameters": [],
"privileged": true
},
"volumes": [],
"portMappings": [
{
"containerPort": 5011,
"hostPort": 0,
"labels": {},
"protocol": "tcp",
"servicePort": 10000
}
]
},
"networks": [
{
"mode": "container/bridge"
}
],
"portDefinitions": [],
"fetch": [
{
"uri": "file:///etc/docker.tar.gz",
"extract": true,
"executable": false,
"cache": false
}
]
}
网络马拉松:
{
"id": "/ms-console",
"cmd": null,
"cpus": 1,
"mem": 2000,
"disk": 0,
"instances": 0,
"acceptedResourceRoles": [
"*"
],
"container": {
"type": "DOCKER",
"docker": {
"forcePullImage": true,
"image": "****/****:ms-console",
"parameters": [],
"privileged": true
},
"volumes": [],
"portMappings": [
{
"containerPort": 8383,
"hostPort": 0,
"labels": {},
"protocol": "tcp",
"servicePort": 10000
}
]
},
"networks": [
{
"mode": "container/bridge"
}
],
"portDefinitions": [],
"fetch": [
{
"uri": "file:///etc/docker.tar.gz",
"extract": true,
"executable": false,
"cache": false
}
]
}
Web应用程序我使用硬编码的IP连接到Metastore(在属性中提到)。我为两者创建了docker镜像并在我的服务器中运行。 Metastore服务器现在在不同的机器上运行,因此我的Web应用程序无法解析此IP。
答案 0 :(得分:0)
您需要在此处执行的操作是使用5011
公开-p
作为在“不同计算机”上运行的元数据服务器上的主机端口 -
docker run -d -p 5011:5011 metadata_image ....
现在,您的Web应用程序应该能够使用http://$different_machine_ip:5011/
$ different_machine_ip =元数据服务器IP
然而,由于他们需要紧密耦合,我建议你运行web app&amp;如果您的元数据服务器是无状态的,则在同一台机器上安装元数据服务器。