Как соединить два контейнера и изменить параметры для springbootapp / mysqldb в Docker - PullRequest
0 голосов
/ 11 июля 2019

Следующий случай:

У меня есть два контейнера, один с базой данных MySQL, в которой есть несколько таблиц и прочее, и контейнер с подпружиненной загрузкой, которая запускает приложение .war, для которого требуется указанная база данных и нужен доступ для полета.Оба построены с помощью файла docker-compose и отдельных файлов Docker.
Как я могу соединить оба, чтобы мое приложение Springboot могло получить доступ к БД?Прямо сейчас я получаю сообщение об ошибке:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure

, потому что он по-прежнему указывает на localhost (контейнер приложения), где ofc - это не mysql db.

spring.datasource.url: jdbc:mysql://#${db.hostname:localhost}:${db.port:3306}/${db.dbname:appdb}?useSSL=false&useUnicode=yes&characterEncoding=UTF-8

Когда я изменяю db.имя хоста с IP-адресом сети, я все еще получаю ошибку.И я не знаю, как «поговорить» с контейнером напрямую.Есть идеи что делать?Когда это возможно, это должно происходить либо в Dockerfile, либо в файле docker-compose, либо в сценарии (в основном автоматически, без отдельных команд «docker run xxx -»).Проект должен проверить, может ли указанное приложение работать в среде докера.

Когда я проверяю, открыт ли порт 3306 docker0 (мост по умолчанию?) С помощью nmap, это так.

docker-compose.yml

version: "3"
services:
  mysqldb:
    container_name: mysqldb
    networks:
      - app-mysql
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=app
    build: ./mysql
    volumes:
      - datavolume:/var/lib/mysql
    ports:
      - "3306:3306"


  app-sb:
    container_name: app
    build: ./app
    networks:  
      - app-mysql
    depends_on:  
      - mysqldb
    links:
      - mysqldb
volumes:
  datavolume:
networks: 
  app-mysql:
    driver: bridge

Dockerfile для mysqldb:

FROM mysql:5.7
COPY target/app-bck.sql /
ADD init_db.sh /tmp/init_db.sh
RUN /tmp/init_db.sh

Dockerfile для приложения Springboot:

FROM openjdk:8-jdk-alpine
VOLUME /tmp
COPY target/app.war /
COPY target/app.yaml /
RUN mkdir /etc/app
RUN mv app.yaml /etc/app/

RUN java -jar /app.war

/ etc/app/app.yaml

baseUrl: https://app.web.site
db.hostname: mysqldb
db.port: 3306
db.name: app
db.username: app
db.password: somepw
mail.host: localhost
mail.sender: no-reply@web.site
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...