【发布时间】:2021-03-24 18:09:10
【问题描述】:
我已经观看了大约 23.74 篇关于 laravel 和 mysql 容器的 docker-compose 教程!
谁能给我解释一下???
当我创建我的 docker-compose 文件时,我从一个 mysql 映像创建一个 mysql 容器。 然后 我必须输入如下所示的变量:
environment:
MYSQL_DATABASE: homestead
MYSQL_USER: homestead
MYSQL_PASSWORD: secret
MYSQL_ROOT_PASSWORD: secret
SERVICE_TAGS: dev
SERVICE_NAME: mysql
这些变量与我在 laravel 应用程序的 .env 文件中输入的变量有什么区别。 这些:
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=laradb
DB_USERNAME=root
DB_PASSWORD=secret
有什么区别????
docker-compose 变量在做什么。这些 .env 变量在做什么。为什么我要设置两次?
我问的原因是因为每当我按照docker教程设置mysql时,如果我使用老师提供给我的各种变量,我只能让它工作??这是没有意义的。如果我想使用自己的变量值怎么办??! 一旦我尝试使用我自己的变量,数据库就会中断,我无法连接到它。 homestead 是一些用于 laravel 的特殊数据库实例吗?当我在没有 docker 的情况下在本地完成所有操作时,这不是问题。
例如。上面的 docker-compose 变量用于创建一个 mysql 容器,然后当我使用 SQL 工作台连接到它时,我看到一个名为“宅基地”的模式。现在,如果我不想将该 Schema 称为宅基地,或者如果我想添加另一个 Schema,我该怎么办?它不让我??(权限被拒绝)。
我现在花了 3 天时间尝试创建一个空的 laravel 应用程序,该应用程序连接到一个单独的容器中的数据库,该容器使用 mysql,我可以通过 SQL 工作台连接到该容器以查看实际的数据库。我希望能够创建我想在 SQL 工作台中使用的架构名称,然后能够将该架构设置为我的 laravel .env 文件中的数据库名称。
请帮忙!你不必为我解决这个问题,但你能给我指出一些解释这些东西的有用材料吗!对于 docker-compose 特别是 mysql。如果可能,不要在终端中使用 std docker 命令。
【问题讨论】:
-
你可以像这样在撰写文件
MYSQL_DATABASE: '${.env_vairable_name}'中使用你只需要放入.env
标签: mysql laravel docker docker-compose mysql-workbench