如何连接两个 docker 容器,一个包含内存数据网格中的 hazelcast,另一个包含 war 文件



我有两个docker容器,一个带有hazelcast java应用程序(Web应用程序的核心 - jar包(,另一个带有Web应用程序的休息服务(war包(。我正在使用 docker-compose 在 docker 中构建整个项目,如下所示:

version: "3" 
services:
escomled_datagrid:
image: escomled/escomled_datagrid
build:
context: ./sh_scripts/escomled_data_grid
tomcat:
image: escomled/tomcat
build:
context: ./tomcat/app
ports:
- 8585:8080
depends_on: 
- escomled_datagrid
links:
- escomled_datagrid:escomled_datagrid

我还有每个容器的 Dockerfile:

-escomled_datagrid:

FROM openjdk:8-jdk-alpine as build
WORKDIR /EscomledML
COPY  ./. ./
COPY  ./escomled.properties 
/home/escomled/escomled_server/config/escomled.properties
CMD ["sh","/EscomledML/escomled_data_grid.sh","start"]

EXPOSE 8085

-雄猫

FROM tomcat:8.5-alpine
COPY ./sample.war /usr/local/tomcat/webapps/
COPY ./escomled-rest.war /usr/local/tomcat/webapps/
COPY  ./escomled.properties 
/home/escomled/escomled_server/config/escomled.properties
RUN sh -c 'touch /usr/local/tomcat/webapps/sample.war'
RUN sh -c 'touch /usr/local/tomcat/webapps/escomled-rest.war'
EXPOSE 8080

第一个容器在运行时中使用 sh 脚本。 这样,每次工作正常,容器启动并保持活动状态。 唯一的问题是他们看不到对方,hazelcast服务器启动并等待"成员"连接,war文件(hazelcast成员(也启动,但他们没有"看到"对方并且不会连接。我放入了docker-compose文件"链接"和"依赖"标签,但这无济于事。

当我在本地启动项目时,该项目的代码工作正常,首先我将数据网格服务器作为 java 应用程序启动,然后我启动包含 rest 服务的 tomcat 并立即建立连接。

所以我的问题是,我如何链接这两个容器,以便它们可以看到彼此并协同工作?

尝试通过指定网桥将容器放在同一个"网络"中

version: "3" 
services:
escomled_datagrid:
image: escomled/escomled_datagrid
build:
context: ./sh_scripts/escomled_data_grid
networks:
- networknamename

tomcat:
image: escomled/tomcat
build:
context: ./tomcat/app
ports:
- 8585:8080
depends_on: 
- escomled_datagrid
links:
- escomled_datagrid:escomled_datagrid
networks:
- networknamename

networks:
networknamename:
driver: bridge

最新更新