Как связать весеннее приложение с mysql в docker compose? - PullRequest
0 голосов
/ 17 марта 2019

Хотя у меня есть элементарная управляемая служба загрузки Spring, которая запускается после службы mysql docker, в приложении по-прежнему происходит сбой канала связи. Я не знаю, что еще делать, я перепробовал слишком много вещей.

Мой docker-compose:

version: '3'
services:
  mysql:
    container_name: hernidb
    image: mysql
    volumes:
     - "./waitForMySQL.sh:/usr/local/bin/waitForMySQL.sh"
    ports:
      - '3306:3306'
    environment:
      USER: 'root'
      MYSQL_ROOT_PASSWORD: 'rida'
    restart: always
  app:
    container_name: herniemp
    restart: always
    build: ./EmployeeService
    working_dir: /app
    volumes:
      - ./EmployeeService:/app
      - ~/.m2:/root/.m2
    ports:
      - '8080:8080'
    command: bash -c "sleep 120 && mvn clean spring-boot:run -Dspring-boot.run.profiles=dev"
    depends_on:
      - mysql

Я знаю, что sleep 120 постыдно, но со скриптами, помещенными в свойство тома, оно дает мне сообщение об отказе в разрешении. Также опция link устарела.

1 Ответ

0 голосов
/ 19 марта 2019

Вам необходимо хранить эти два контейнера в одной сети.Рассмотрим следующий файл Docker для настройки в той же сети:

version: '3'
services:
  mysql:
    container_name: hernidb
    image: mysql
    volumes:
     - "./waitForMySQL.sh:/usr/local/bin/waitForMySQL.sh"
    ports:
      - '3306:3306'
    environment:
      MYSQL_ROOT_PASSWORD:rida
    networks:
      movie-quote-network:
        aliases:
          - herni-database
    restart: always
  app:
    container_name: herniemp
    restart: always
    build: ./EmployeeService
    working_dir: /app
    networks:
      movie-quote-network:
        aliases:
          - herni-service
    volumes:
      - ./EmployeeService:/app
      - ~/.m2:/root/.m2
    ports:
      - '8080:8080'
    command: bash -c "sleep 120 && mvn clean spring-boot:run -Dspring-boot.run.profiles=dev"
    depends_on:
      - mysql

networks:
  herni-network:

Как вы можете видеть, мы определили сеть с именем herni-network внизу, с пустым телом.Я также добавил раздел сети в каждую конфигурацию контейнера и предоставил псевдоним для этого конкретного контейнера.

Оба контейнера смогут обмениваться данными друг с другом, используя указанный псевдоним в качестве имени хоста.

...