如何解决docker-compose up 后,MySql Docker 容器的数据不存在
我正在运行两个 docker 容器:
- docker-mysql-activity
- 活动服务
我确保数据的持久性,这要归功于卷。
那是我的 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:
当我执行 docke-compose up 一切顺利并且创建了卷时,我已经验证在 Docker 的卷文件夹中查看并且它正确保存了数据(所有都通过邮递员验证 - GET 和 POST数据正常工作)。
当我尝试 docker-compose down 或 docker-compose stop 然后再次尝试 docker-compose up 时出现问题,数据不再坚持。
我确定该问题与 docker-compose down 无关,因为卷仍然存在,而是卷中的数据在我执行命令 docker-compose 时被重置向上。
解决方法
编辑
activity-service 是一个 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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。