gpt4 book ai didi

docker - Mysql docker容器未挂载

转载 作者:行者123 更新时间:2023-12-02 18:28:01 26 4
gpt4 key购买 nike

我已经使用 docker-compose 创建了 mysql docker 容器。我构建了容器并在 mysql 中创建了一些表。但是,当我重新启动计算机时,我在 mysql 中丢失了我的数据(表和数据)。我正在使用容器中的本地文件夹作为卷。但我看到它没有安装在虚拟容器中。

我的操作系统是 Windows 10 Pro。我尝试重新启动 Docker 桌面和容器,但没有帮助。这里是 .yml我正在运行:

version: '3.3'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: 'db_name'
MYSQL_USER: 'db_user'
MYSQL_PASSWORD: 'db_pass'
MYSQL_ROOT_PASSWORD: 'db_root_pass'
ports:
- '3308:3306'
volumes:
- ./mysql-log:/var/log/mysql
- ./dbdata:/var/lib/mysql
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

最佳答案

MySQL docker 镜像存在一些权限问题。因此,您可以使用具有 no issues 的 MariaDB,而不是使用 MySQL。使用 docker 卷

在您的 docker-compose 中,您正在从当前目录挂载 dbdata,由于 MySQL docker 镜像的 docker 卷的一些权限问题,该目录不会挂载。
挂载到共享文件夹不起作用,而不是使用 ./dbdata 尝试使用/dbdata

即使我遇到了同样的问题,我也将 MySQL 更改为 MariaDB,并将我的卷安装到/dbdata,它对我有用。这是我的 docker-compose.yml

version: '3'
services:
mysql:
image: mariadb
container_name: mysql
environment:
MYSQL_DATABASE: 'movies'
# So you don't have to use root, but you can if you like
MYSQL_USER: 'user'
# You can use whatever password you like
MYSQL_PASSWORD: '123'
# Password for root access
MYSQL_ROOT_PASSWORD: '1234'
ports:
# <Port exposed> : < MySQL Port running inside container>
- '3306:3306'
expose:
# Opens port 3306 on the container
- '3306'
# Where our data will be persisted
volumes:
- /dbdata :/var/lib/mysql

在您的情况下,您创建的数据库和表没有持久化。
如果您有表的备份文件,则将该备份文件移动到虚拟机中的/dbdata,然后创建数据库并将该备份文件加载到数据库中

关于docker - Mysql docker容器未挂载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504863/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com