docker compose: весеннее загрузочное соединение с базой данных mysql отказано - PullRequest
1 голос
/ 25 июня 2019

Я довольно новичок в Docker, и мне нужно запустить мой проект Angular / SpringBoot / MySQL с помощью docker-compose на панели инструментов docker.Я скопировал файл докера yml в свой проект, который использовал те же технологии и изменил пути внутри него, чтобы он соответствовал моему проекту.Однако при попытке docker-compose выдается следующая ошибка:

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure
[...] 84 common frames omitted
Caused by: java.net.ConnectException: Connection refused (Connection refused)

docker-compose.yml выглядит следующим образом:

version: '3'

services:
  database:
    image: mysql
    container_name: database
    environment:
      MYSQL_ROOT_PASSWORD: ****
      MYSQL_DATABASE: db_example
      MYSQL_USER: springuser
      MYSQL_PASSWORD: ****
    ports:
      - 3306:3306
    volumes:
      - db_exampleData:/var/lib/mysql

  springapi:
    image: openjdk:10-jre-slim
    container_name: springapi
    ports:
      - 8443:8443
    depends_on:
      - database
    volumes:
      - ./backend/target/backend-0.1.0.jar:/application.jar
    command: ["java", "-jar", "application.jar"]

  angular:
    image: nginx:alpine
    container_name: angular
    ports:
      - 4200:80
    depends_on:
      - springapi
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./frontend/my-app/dist/my-app:/usr/share/nginx/html

volumes:
  db_exampleData:

application.properties:

spring.jpa.hibernate.ddl-auto=none
spring.jpa.open-in-view=false
spring.datasource.url=jdbc:mysql://localhost:3306/db_example
spring.datasource.username=springuser
spring.datasource.password=****

server.port=8443

любое предложение будет полезно!

1 Ответ

2 голосов
/ 25 июня 2019

вам нужно изменить соединение следующим образом:

jdbc:mysql://database:3306/db_example

и добавить его в свой докер-композит под сервисом springapi:

links:
   - database

, с другой стороны, вы можетеиспользуйте wait-for-it.sh , чтобы проверить, работает ли БД, добавив раздел команд в springapi service:

command: ["path/to/wait-for-it.sh", "database:3306", "-t", "6000", "--", "YOUR ACTUAL COMMAND"]
...