Docker compose 未在数据库中创建表

问题描述 投票:0回答:1

我正在学习 Docker,遇到一个错误是我创建了一个基本的 CRUD springboot 应用程序,它创建、getById 和 getAll Users,然后配置 Dockerfile,然后配置 docker-compose.yml。一旦我运行 docker-compose up,它就开始创建图像和容器,我可以看到它们运行完美(状态正在运行),但它们没有在 MySQL 中创建用户表,或者简单地说,它没有运行 Springboot 应用程序,只是运行dockerfile 和 docker-compose.yml..

Dockerfile
FROM openjdk:21
LABEL authors="MohammedKhadeer"
WORKDIR /usr/src/myapp
COPY . /usr/src/myapp/
#ENTRYPOINT ["java", "-jar","./target/docker-0.0.1-SNAPSHOT.jar"]
CMD ["java", "-jar","./target/docker-0.0.1-SNAPSHOT.jar"]

docker-compose.yml

services:
  mydb:
    image: mysql:latest
    container_name: mysql_database_latest
    environment:
      - MYSQL_DATABASE = docker-testing
      - MYSQL_USER =  admin
      - MYSQL_PASSWORD =  root
      - MYSQL_ROOT_PASSWORD =  root
    restart: unless-stopped
    volumes:
      - ./data:/var/lib/mysql
    ports:
      - 3333:3306
    networks:
      - myapplication
  myapp:
    build: ./docker
    container_name: docker_boot_app
    depends_on:
      - mydb
    environment:
      - spring.datasource.url=jdbc:mysql://mydb:3306/docker-testing?createDatabaseIfNotExist=true
      - spring.datasource.username=admin
      - spring.datasource.password=root
    ports:
      - 8081:8080
    networks:
      - myapplication
networks:
  myapplication:

application.property
spring.application.name=docker

#spring.datasource.url=jdbc:mysql://localhost:3306/docker-testing
#spring.datasource.username=admin
#spring.datasource.password=root

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

enter image description here enter image description here

java spring-boot docker docker-compose
1个回答
0
投票

您的应用程序未创建表,因为

spring.jpa.hibernate.ddl-auto
设置为更新,这仅更新现有架构。 如果要创建表,您需要将
spring.jpa.hibernate.ddl-auto
属性设置为
create
create-drop

create
- 如果表不存在,将创建表。

create-drop
- 将在应用程序启动时创建表格,然后在应用程序关闭时创建表格。

© www.soinside.com 2019 - 2024. All rights reserved.