mysql - MySql Docker Container 的数据在 docker-compose up 后不持久
问题描述
我正在运行两个 docker 容器:
- docker-mysql-活动
- 活动服务
并且我可以确保数据的持久性,这要归功于数据量。
那是我的 docker-compose.yml
version: '3'
services:
docker-mysql-activity:
image: mysql:latest
container_name: docker-mysql-activity
volumes:
- mysql_activity:/var/lib/mysql
ports:
- 33061:3306
environment:
- MYSQL_ROOT_PASSWORD=admin123
- MYSQL_DATABASE=SCactivity
- MYSQL_USER=testuser
- MYSQL_PASSWORD=testuser@123
activity-service:
image: activity-service:latest
container_name: activity-service
environment:
- SPRING_APPLICATION_NAME=activity-service
hostname: activity-service
build:
context: ./activity-service
dockerfile: Dockerfile
ports:
- 9001:9001
depends_on:
- service-registry
- docker-mysql-activity
volumes:
mysql_activity:
当我执行doke-compose up一切顺利并创建卷时,我已经验证查看 Docker 的卷文件夹并正确保存数据(所有验证都通过邮递员验证 - GET 和 POST 数据正常工作)。
当我尝试docker-compose down或docker-compose stop然后docker-compose up再次出现问题时,数据不再存在。
我确信这个问题与docker-compose down无关,因为卷仍然存在,而是当我执行命令docker-compose up时重置卷内的数据。
解决方案
编辑
活动服务是一个 Spring Boot 微服务。
它有这个 application.yml:
server:
port: 9001
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://docker-mysql-activity:3306/SCactivity?createDatabaseIfNotExist=true
username: testuser
password: testuser@123
hikari:
initialization-fail-timeout: 0
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
generate-ddl: true
show-sql: true
hibernate:
ddl-auto: create
表类是Activity.java:
@Entity
@Table(name = "Activity")
@Getter
@Setter
public class Activity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "ACT_ID")
private long id;
@Column(name = "NAME")
private final String name;
@Column(name = "DESCR")
private final String descr;
@Column(name = "fitness")
private Boolean fitness;
@Column(name = "nuoto")
private Boolean nuoto;
public Activity() {
this.name = "";
this.descr = "";
}
}
解决 了问题在这里:
server:
port: 9001
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://docker-mysql-activity:3306/SCactivity?createDatabaseIfNotExist=true
username: testuser
password: testuser@123
hikari:
initialization-fail-timeout: 0
jpa:
database-platform: org.hibernate.dialect.MySQL5Dialect
generate-ddl: true
show-sql: true
hibernate:
ddl-auto: create
代替
ddl-auto: create
和
ddl-auto:update
推荐阅读
- python - 如何在 Python 中解释一年前的 RFC 3339 日期时间字符串?
- google-maps - 可以在 viewmodelscope 中创建 clicklisteners(或其他 listeners)吗?
- python - 类中用于特征选择的函数的解释
- google-sheets - 谷歌工作表的错误结果从另一个有条件的 URL 获取工作表
- c# - NotSupportedException: Store 没有实现 IUserLoginStore
- apache-spark - 使用自己的存储库在 Databricks 上安装 python 轮子依赖项
- python - 如何使用不同的参数在命令中执行 python 文件
- discord.py - 在体验系统中为 on_message 应用冷却时间
- python - 密码管理器替换密码
- amazon-web-services - 备份 AWS Athena 视图的方法