为什么mysql docker 数据在拉取运行 新图像和清除缓存后仍然存在?
Why mysql docker data still exist after pulling and running new image and clearing cache?
我 运行 mysql 和一个简单的 spring 启动应用程序,用于仅使用简单的控制器和存储库 class.[=19 获取数据以存储在数据库中=]
我添加了一些数据。然后 我停止了所有容器并删除了图像和卷
I 运行: docker system prune --volumes -a
当 I 运行 docker system df
输出是:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
据我所知,除了 docker 本身,PC 上什么都没有。
但是当我 运行 我的 docker-compose.yml 文件 docker-compose up -d
它正在下载 mysql 的新图像并从它的 docker 文件构建我的应用程序,但是当我检查数据库时,我仍然在数据库中看到旧数据。这是我的 docker-compose.yml 文件:
version: '3.9'
services:
mysql:
platform: linux/amd64
image: mysql:8
container_name: mysqlcustomerdb
restart: always
ports:
- '3306:3306'
volumes:
- ~/apps/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_PASSWORD=1234
- MYSQL_DATABASE=mysqlcustomerdb
- DATABASE_HOST=mysqlcustomerdb
- MYSQL_ROOT_HOST=%
- lower_case_table_names=1
- init-connect='GRANT CREATE USER ON . TO 'root'@'%';FLUSH PRIVILEGES;'
dockerdeneme:
container_name: dockerdeneme
image: dockerdeneme
build: ./
restart: always
deploy:
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
ports:
- '8080:8080'
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_PASSWORD=1234
- MYSQL_USER=root
- MYSQL_DATABASE=mysqlcustomerdb
depends_on:
- mysql
volumes:
cache:
driver: local
为什么我添加到数据库的旧数据即使我 运行 docker system prune --volumes -a
仍然存在?我是否缺少 docker 撰写文件中的一些命令来刷新数据库,或者我是否需要从项目等中清除一些文件夹?
您正在将主机上的目录装载到 /var/lib/mysql。由于它不是 docker 卷,您无法使用 docker 命令查看它。
删除主机上~/apps/mysql
的内容,你的数据应该就没有了。
我 运行 mysql 和一个简单的 spring 启动应用程序,用于仅使用简单的控制器和存储库 class.[=19 获取数据以存储在数据库中=]
我添加了一些数据。然后 我停止了所有容器并删除了图像和卷
I 运行: docker system prune --volumes -a
当 I 运行 docker system df
输出是:
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 0 0 0B 0B
Containers 0 0 0B 0B
Local Volumes 0 0 0B 0B
Build Cache 0 0 0B 0B
据我所知,除了 docker 本身,PC 上什么都没有。
但是当我 运行 我的 docker-compose.yml 文件 docker-compose up -d
它正在下载 mysql 的新图像并从它的 docker 文件构建我的应用程序,但是当我检查数据库时,我仍然在数据库中看到旧数据。这是我的 docker-compose.yml 文件:
version: '3.9'
services:
mysql:
platform: linux/amd64
image: mysql:8
container_name: mysqlcustomerdb
restart: always
ports:
- '3306:3306'
volumes:
- ~/apps/mysql:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_PASSWORD=1234
- MYSQL_DATABASE=mysqlcustomerdb
- DATABASE_HOST=mysqlcustomerdb
- MYSQL_ROOT_HOST=%
- lower_case_table_names=1
- init-connect='GRANT CREATE USER ON . TO 'root'@'%';FLUSH PRIVILEGES;'
dockerdeneme:
container_name: dockerdeneme
image: dockerdeneme
build: ./
restart: always
deploy:
restart_policy:
condition: on-failure
delay: 10s
max_attempts: 3
window: 120s
ports:
- '8080:8080'
environment:
- MYSQL_ROOT_PASSWORD=1234
- MYSQL_PASSWORD=1234
- MYSQL_USER=root
- MYSQL_DATABASE=mysqlcustomerdb
depends_on:
- mysql
volumes:
cache:
driver: local
为什么我添加到数据库的旧数据即使我 运行 docker system prune --volumes -a
仍然存在?我是否缺少 docker 撰写文件中的一些命令来刷新数据库,或者我是否需要从项目等中清除一些文件夹?
您正在将主机上的目录装载到 /var/lib/mysql。由于它不是 docker 卷,您无法使用 docker 命令查看它。
删除主机上~/apps/mysql
的内容,你的数据应该就没有了。