我目前正在学习laravel和docker。我之前安装了MySQL,想用docker和adminer运行服务器,下面是docker-compose.yml
version: "3.9"
services:
mysql:
image: mysql
command: --default-authentication-plugin=mysql_native_password
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
ports:
- 3306:3306
adminer:
image: adminer
restart: always
ports:
- 8080:8080
字符串
我可以成功地登录到localhost:8080并能够在adminer中创建新的数据库。但问题是,我不能在本地安装MySQL从我以前的项目数据库。
我想在docker中连接MySQL数据库(或目录),因此它指的是我计算机中安装的MySQL。
我运行了服务器,并尝试使用php artisan migrate
与数据库名称aan
从cli迁移,它创建了新的数据库。但是,数据库并没有显示在docker中。
这是cli和dbeaver的输出
mysql> SHOW DATABASES
-> ;
+--------------------+
| Database |
+--------------------+
| aan |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql>
型
的数据
这是adminer中的数据库(我也尝试在adminer中创建test1
,但它没有显示在cli中)
的
编辑1:
对不起,我没有足够的声誉点后,而不是链接的图像量
1条答案
按热度按时间kupeojn61#
要在docker容器上持久化数据,可以使用绑定挂载。这意味着您将从容器中的localhost挂载一个目录。在你的例子中,如果你绑定mount
/path/to/local/directory/mysql
到/var/lib/mysql
,你可以在mysql容器删除/创建之间持久化mysql数据。字符串
另一个问题,似乎你有在评论中提到,你似乎有一个mysql服务运行在您的本地pc上。为了使用相同的端口,你需要停止本地mysql服务,然后执行
docker-compose up
,或者你需要在docker-compose.yml中更改本地端口:型
现在有了新的docker-compose.yml,容器中的mysql服务将在
localhost:3307
上可用。你只需要配置你的项目在那个主机/端口组合上连接到mysql,然后再次执行migrate命令。