как использовать mysql базу данных в docker -compse - PullRequest
0 голосов
/ 04 августа 2020

Я хочу использовать docker -compose fast build service и database, но это не сработало

это конфигурация spring-boot-data-jpa

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://${ip}:3306/db?&useUnicode=yes&serverTimezone=CTT&characterEncoding=UTF-8&useSSL=true
    driver-class-name: com.mysql.cj.jdbc.Driver
  jpa:
    database-platform: org.hibernate.dialect.MySQL57InnoDBDialect
    hibernate:
      ddl-auto: update
    database: mysql

это Dockerfile

Dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAVA_OPTS
ENV JAVA_OPTS=$JAVA_OPTS
ADD target/spring-boot-db-service-0.0.1-SNAPSHOT.jar spring-boot-db-service.jar
EXPOSE 8080
ENTRYPOINT exec java $JAVA_OPTS -jar spring-boot-db-service.jar

это файл docker -compose

docker -compose

version: "3.7"
services: 
  dbservice: 
    image: dbservice:latest
    hostname: dbservice
    environment: 
      - ip=mysql
    depends_on: 
      - mysql
    networks:
      - db
    ports: 
      - "8080:8080"
  mysql:
    image: mysql:5.7.31
    environment: 
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=db
    networks: 
      - db
    ports: 
      - "3306:3306"
    hostname: mysql
networks: 
  db:
    driver: bridge

1 Ответ

0 голосов
/ 04 августа 2020

Если вы запускаете приложение из docker compose, вам нужно изменить хост с ip на имя сервиса compose, в этом случае mysql

ваша строка подключения будет

url: jdbc:mysql://mysql:3306/db?&useUnicode=yes&serverTimezone=CTT&characterEncoding=UTF-8&useSSL=tru

более подробную информацию вы можете найти в документации https://docs.docker.com/compose/networking/

...