Как подключить два контейнера докеров, один из которых содержит hazelcast в сетке данных памяти, а другой - файл войны

У меня есть два контейнера докеров, один с java-приложением hazelcast (ядро для веб-приложения - пакет jar) и один со службой отдыха для веб-приложения (военный пакет). Я использую docker-compose для создания всего проекта в докере, который выглядит так:

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 теги «links» и «зависит от», но это не поможет.

Код проекта работает нормально, когда я запускаю его локально, сначала я запускаю сервер сетки данных как приложение Java, затем я запускаю tomcat, содержащий службу отдыха, и соединение устанавливается в кратчайшие сроки.

Итак, мой вопрос: как связать эти два контейнера, чтобы они могли видеть друг друга и работать вместе?

0
0
149
1

Ответы 1

попробуйте поместить контейнеры в одну «сеть», указав сетевой мост

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

Привет, Рутгер, спасибо за ответ, это тоже не работает, оба контейнера запускаются, но они все еще не видят друг друга, я тоже попробовал драйвер наложения и все еще не работает

Dusan Cvetkov 13.08.2018 09:38

Можно как-нибудь подключиться, буду признателен за вашу помощь .. 3 дня застрял с этой проблемой.

Dusan Cvetkov 13.08.2018 10:24

Я сейчас на работе, постараюсь сегодня вечером найти время, чтобы воссоздать вашу проблему, но я далек от эксперта. Надеюсь я смогу помочь

Rutger Vk 13.08.2018 10:57

Большое спасибо, сэр! Планируете ли вы как-то связаться со мной, чтобы я мог показать вам все в проекте и пообщаться?

Dusan Cvetkov 13.08.2018 12:14

Я очень занят в данный момент, но если вы предоставите мне свой адрес электронной почты, я хотел бы попытаться помочь вам. Контейнеры в сети моста по умолчанию могут обращаться друг к другу только по IP-адресам, если вы не используете параметр --link, который считается устаревшим. В определяемой пользователем сети моста контейнеры могут разрешать друг друга по имени или псевдониму.

Rutger Vk 13.08.2018 16:59

попробуйте запустить эти 3 комментария docker network create -d bridge br0: docker network connect br0 escomled_datagrid docker network connect br0 tomcat

Rutger Vk 13.08.2018 17:04

xelcina@gmail.com, вы можете связаться со мной по этому адресу электронной почты, спасибо

Dusan Cvetkov 13.08.2018 19:33

Другие вопросы по теме