我正在学习 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
您的应用程序未创建表,因为
spring.jpa.hibernate.ddl-auto
设置为更新,这仅更新现有架构。
如果要创建表,您需要将 spring.jpa.hibernate.ddl-auto
属性设置为 create
或 create-drop
。
create
- 如果表不存在,将创建表。
create-drop
- 将在应用程序启动时创建表格,然后在应用程序关闭时创建表格。