Eri*_*ich 5 mysql docker laravel-sail
我使用 Laravel Sail 作为我的开发环境。根据文档,
当 MySQL 容器启动时,它将确保存在一个名称与 DB_DATABASE 环境变量的值匹配的数据库。
这非常适合我的开发环境,但在测试方面效果不佳,因为我.env.testing定义了一个单独的数据库,并且似乎没有创建该数据库 - 当我sail mysql进入容器并运行时show databases;,它没有列出。因此,sail test与数据库相关的每个测试都无法运行。
SQLSTATE[HY000] [1045] Access denied for user ...
Run Code Online (Sandbox Code Playgroud)
我的.env文件包含以下内容:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dev
Run Code Online (Sandbox Code Playgroud)
我的.env.testing文件包含以下内容:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=test
Run Code Online (Sandbox Code Playgroud)
DB_USERNAME并且DB_PASSWORD在两个文件中是相同的。
如何创建此数据库以便在运行时可用sail test?
编辑:
当我深入研究存储库代码mysql时,我发现构建容器映像时正在创建数据库,但看起来没有创建多个数据库的选项。
MYSQL_DATABASE该变量是可选的,允许您指定要在映像启动时创建的数据库的名称。如果提供了用户/密码(见下文),则该用户将被授予对此数据库的超级用户访问权限(对应于 GRANT ALL)。
小智 8
将以下内容添加到密钥docker-compose.yml下services:并将您的主机设置.env.testing为mysql_test:
mysql_test:
image: "mysql:8.0"
environment:
MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
MYSQL_DATABASE: "${DB_DATABASE}"
MYSQL_USER: "${DB_USERNAME}"
MYSQL_PASSWORD: "${DB_PASSWORD}"
MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
networks:
- sail
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4611 次 |
| 最近记录: |