【问题标题】:Docker database container does not get data in existing dbDocker 数据库容器未获取现有数据库中的数据
【发布时间】:2020-10-22 18:10:01
【问题描述】:

我已经为我现有的本地 Mysql 数据库创建了一个 docker 容器。尽管容器在我的本地数据库中正确创建了表,但其中的数据根本没有传递,并且它不断返回一个空集。我应该在容器中再次插入我的数据还是有办法在容器中同步我的本地数据库和数据库?这是 docker.compose.yml:

version: '3'

services:

  mysql_st:
    image: mysql:latest
    container_name: mysql_st
    environment:
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: components
      MYSQL_PASSWORD: 123456
    ports:
      - "3308:3306"
  app-mysql:
    image: app-mysql:latest
    container_name: app-mysql
    ports:
        - "9090:9090"
    depends_on:
        - mysql_st
    volumes:
        - ./target/app-mysql.jar:/app-mysql.jar
    command: ["java", "-jar", "app-mysql.jar"]
    build:
      context: ./
      dockerfile: Dockerfile
    links:
        - "mysql_st"
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql_st:3306/components?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

Dockerfile:

FROM openjdk:latest
ADD target/app-mysql.jar app-mysql.jar
EXPOSE 9090
ENTRYPOINT ["java","-jar","app-mysql.jar"]
VOLUME /var/lib/mysql

应用程序属性:

spring.datasource.username= root
spring.datasource.password= 123456
spring.jpa.properties.hibernate.dialect= org.hibernate.dialect.MySQL5InnoDBDialect
spring.datasource.url=jdbc:mysql://mysql_st:3306/components?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC

# Hibernate ddl auto (create, create-drop, validate, update)
spring.jpa.hibernate.ddl-auto= update
server.port = 9090

spring.servlet.multipart.max-file-size=2MB
spring.servlet.multipart.max-request-size=2MB

【问题讨论】:

  • 您的数据流如何运作?只有一个数据库获取数据并希望同步。
  • 我已经用本地数据库中的数据创建了数据库表。后来,当我创建了一个 docker 容器并将其链接到我的本地数据库时,我也希望能够同步数据。但它没有。有没有办法做到这一点,或者我应该从头开始将我的数据插入到 docker 容器中,然后从现在开始继续使用它作为参考?
  • 本地数据库和 docker 数据库之间没有链接。这些是 2 个单独的数据库实例。因此,本地数据库中的数据当然不会在本地数据库中可见。
  • 抱歉我的无知,但我希望连接这两个添加部分'SPRING_DATASOURCE_URL: jdbc:mysql://mysql_st:3306/components?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC'。如果没有,最好的方法是什么?

标签: mysql spring-boot docker docker-compose


【解决方案1】:

如果您的本地机器(主机)上已经有一个 mysql 服务,为什么还要使用 mysql docker 容器?

我认为 mysql 服务部分应该从你的 composefile 中删除

然后你需要从容器(app-mysql)连接到本地机器上运行的数据库

看看这个: From inside of a Docker container, how do I connect to the localhost of the machine?

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2022-10-23
    • 1970-01-01
    • 2022-01-15
    • 2020-12-22
    • 1970-01-01
    • 2022-06-26
    • 2022-01-07
    • 2021-10-31
    相关资源
    最近更新 更多