【问题标题】:how to use mysql database in docker-compse如何在 docker-compose 中使用 mysql 数据库
【发布时间】:2020-08-04 13:58:16
【问题描述】:

我想用docker-compose快速构建一个服务和一个数据库,但是没有成功

这是 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 文件

码头工人撰写

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

【问题讨论】:

  • 当您说“它不起作用”时,实际发生了什么?您可以编辑问题以包含您收到的实际错误消息吗?

标签: mysql spring-boot docker docker-compose


【解决方案1】:

如果您从 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/中找到更多详细信息

【讨论】:

  • 我使用${ip}从docker-compose文件中配置的环境中获取ip。
猜你喜欢
  • 1970-01-01
  • 2019-06-26
  • 2015-11-08
  • 2020-07-08
  • 2015-08-17
  • 2018-04-06
  • 1970-01-01
  • 2017-11-18
  • 1970-01-01
相关资源
最近更新 更多