Laravel 与 Docker 连接 MySQL 的问题

2023-11-21

我使用 Docker 设置 Laravel 的步骤:在我的本地系统中,我没有安装 PHP、Composer、Apache、MySQL、phpMyAdmin 等。我的系统中只安装了 Git 和 Docker。

  1. 克隆https://github.com/laravel/laravel.git

  2. 在项目根目录下创建 docker-compose.yml 文件。

    version: "3"
    services:
      db:
      image: mysql:5.7
      environment:
        MYSQL_ROOT_PASSWORD: pass
        MYSQL_DATABASE: db
        MYSQL_USER: root
        MYSQL_PASSWORD: pass
      ports:
        - "3306:3306"
    
    web:
      image: php:7.2.2-apache
      container_name: web_laravel
      depends_on:
        - db
      volumes:
        - ./:/var/www/html/
      ports:
        - "4000:80"
      stdin_open: true
      tty: true
    
    phpmyadmin:
      image: phpmyadmin/phpmyadmin
      depends_on:
        - db
      external_links:
        - db:mysql
      ports:
        - "9191:80"
      environment:
        MYSQL_USER: root
        MYSQL_PASSWORD: pass
        MYSQL_ROOT_PASSWORD: pass
        PMA_HOST: db
    
  3. 从项目根运行命令。

    docker-compose up
    

    此命令将从本地缓存或 Docker Hub 获取所有映像(php:7.2.2-apache、phpmyadmin/phpmyadmin、mysql:5.7),并为这些映像启动三个容器。

    现在我需要与 php:7.2.2-apache 图像的名为 web_laravel 的容器进行交互(请参阅 yml 文件),以便我可以添加 PHP 扩展和 Composer 来运行 Laravel 项目。

  4. 运行这个命令。

    docker exec -it web_laravel /bin/bash
    

    现在我可以在运行 web_laravel 容器中运行任何命令,因此我安装了 Composer 和 PHP 扩展,如 mbstrings、pdo、pdo_mysql 等。

    然后使用 Composer install 安装 Laravel 依赖项,设置存储和 bootstrap/cache 文件夹的权限并运行 php artisan key:generate。

    打开 localhost:4000 我可以看到 Laravel 主页:

    enter image description here

此时一切都很好。当我连接到数据库时,问题就开始了。

下一个要运行的命令(我仍在容器内):

  php artisan migrate

错误是:

 Illuminate\Database\QueryException  : SQLSTATE[HY000] [2002] No such file or directory (SQL: select * from information_schema.tables where table_schema = blog and table_name = migrations)

 Illuminate\Database\QueryException  : could not find driver (SQL: select * from information_schema.tables where table_schema = blog and table_name = migrations)

enter image description here

enter image description here

我可以打开 phpMyAdmin (http://本地主机:9191)并可以创建DB、表以及相关DB的操作。我已经给DB打电话了blog.

MySQL 环境变量:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=blog
DB_USERNAME=root
DB_PASSWORD=pass

我认为你有几个问题,第一是 laravel .env 配置应该指向 MySQL 容器,而不是 localhost

DB_HOST=127.0.0.1

应该

DB_HOST=db

你提到的另一个错误与 Docker 无关

Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] 没有这样的 文件或目录(SQL:select * from information_schema.tables where table_schema = 博客和 table_name = 迁移)

Illuminate\Database\QueryException :找不到驱动程序(SQL: select * from information_schema.tables 其中 table_schema = blog 和 表名 = 迁移)

它可能与缺少依赖项有关,您应该运行

composer require doctrine/dbal

另外,你还说:

现在我可以在运行 web_laravel 容器中运行任何命令 所以我安装了 Composer 和 php 扩展,例如 mbstrings、pdo、 pdo_mysql 等

您应该在 PHP 7/Apache 映像之上构建映像,并将它们添加到构建 dockerfile 中,因为您的更改(php 扩展、配置...等)不会持久。我建议你使用Laradock或任何其他现有的 Laravel/docker 环境。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Laravel 与 Docker 连接 MySQL 的问题 的相关文章

  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 获取带有计数的不同记录

    我有一张桌子personid and msg列 personid msg 1 msg1 2 msg2 2 msg3 3 msg4 1 msg2 我想得到总计msg对于每个personid 我正在尝试这个查询 select distinct
  • 如何从父类函数访问子类中定义的常量?

    我从 php net 看到这个例子 但 c MY CONST 仅在 5 3
  • Apache 访问 Linux 中的 NTFS 链接文件夹

    在 Debian jessie 中使用 Apache2 PHP 当我想在 Apache 的文档文件夹 var www 中创建一个新的小节时 我只需创建一个指向我的 php 文件所在的外部文件夹的链接 然后只需更改该文件夹的所有者和权限文件夹
  • 没有特权访问的 Docker VPN IPSec 客户端

    我有一个 mysql 数据库 只有在建立 VPN 连接后才能访问 IpSec shared secret 用户名 密码 所以我想运行一个隔离的docker容器 它将建立此连接并以某种方式代理 公开mysql端口 以便其他容器可以连接到它而不
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • preg_match_all 查询仅显示有问题的外部组

    我无法弄清楚如何只显示 preg 查询的外部组级别 我会给你一个例子 preg match all start end input matches 这个输入start1 start2 2end 1end产生这个输出start1 start2
  • “使用未定义常量”注意,但该常量应该被定义

    共有三个文件 common php controller php 和 user php 文件 common php 如下所示 文件controller php看起来像 文件 user php 如下所示 执行脚本时 会给出通知 注意 使用未定
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • PHP 与 MySQL 查询性能( if 、 函数 )

    我只看到这个artice http www onextrapixel com 2010 06 23 mysql has functions part 5 php vs mysql performance 我需要知道在这种情况下什么是最好的表
  • 如果循环中内存超出,我可以在 for 循环中抛出异常吗?

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何处理 foreach 循环中发生
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • CURL 中的 data-urlencode 是什么意思?

    我搜索了很多个小时试图弄清楚 php curl 中的 data urlencode 是什么 我尝试过这个 但我认为这是不对的 xmlpost object1 file https www lob com goblue pdf 在文档中是 d
  • Laravel 中只向登录用户显示按钮

    如果我以 John 身份登录 如何才能只显示 John 的红色按钮而不显示 Susan 的红色按钮 测试系统环境 Win10 Laravel5 4 Mysql5 7 19 table class table table responsive
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 正则表达式分割骆驼大小写

    我在 JavaScript 中有一个正则表达式 可以使用以下代码 我随后从here MyCamelCaseString replace A Z g 1 replace function str return str toUpperCase
  • JSONP 与 IFrame?

    很快我将需要构建一个小部件 我们的一些客户可以将其嵌入到他们自己的网站中 为了将来证明我的小部件 嵌入代码将如下所示 div div iframe 与 JSONP 相比有何优缺点 iframe 是否存在常见的基于 SEO 的问题 首先 if
  • 使用 R 计算数组中出现的频率

    我有一个数组 a lt c 1 1 1 1 1 2 3 4 5 5 5 5 5 6 7 7 7 7 我想使用一些命令来告诉我数组中最常见的数字是哪个 有一个简单的命令吗 The table 函数足以满足这一点 如果您的数据有多个 则特别有用
  • 当鼠标悬停在 QPushButton 上时,如何从 QPushButton 发出信号?

    最近 我想要那个QPushButton当鼠标指针进入时可以发出信号 我怎样才能做到呢 我知道 QPushButton 有一些已经定义的信号 例如clicked pressed destory 等等 但没有像悬停 输入 这样的信号 我查了一些
  • 如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件 (OSX)

    我正在寻找用一些代码修补一个废弃软件 该软件是基于碳的 所以我不能使用InputManager 至少 我不认为我可以 我的想法是向 mach o 标头添加 dylib 引用 并在调用初始化例程时启动一个新线程 我使用十六进制编辑器修改了 m
  • 如果连接到未更改的存储,React componentDidUpdate 方法不会在继承的 props 更改时触发

    我希望我的组件知道某些库是否已加载 要知道 从任何上下文我都将其连接到我的商店的 库 减速器到我的组件 我还向它传递了一个配置对象this props dataObject来自调用该组件的父级 像这样 class GoogleButton
  • 对 pthread CLion 的未定义引用

    我正在尝试在 CLion 中运行这个简单的线程 C 程序 include
  • Lucene 5.0 中按字母顺序对字符串字段进行排序

    我在 Lucene 5 0 中对字符串字段进行排序时遇到问题 显然 自 Lucene 4 以来排序的方式已经改变 下面显示了正在为我的文档建立索引的一些字段的片段 Override public Document generateDocum
  • 使用 Linq 重叠两个日期之间的记录

    在我的应用程序中 用户可以委托另一个用户批准订单 我需要验证的是 没有循环引用 所以如果User A是已委托User B在一定时期内 User B不能委托User A对于该期间内的任何时间 即存在重叠 日期dd mm yyyy Delega
  • 如何从 Java 密钥库中的证书链中仅删除一个证书

    我有一个 Tomcat 服务器 其 HTTPS 证书链存储在 Java 密钥库中 该链包含自签名根 CA 证书 虽然这显然没问题TLS 规范 一些验证服务对此发出警告 并且最好还是把它关掉 如何编辑密钥库以仅删除自签名根 CA 证书 但保持
  • 如何将模块路径添加到python?

    我尝试构建 V8 javascript 引擎 当我尝试调用命令时python build git v8 我收到错误 File build gyp v8 line 48 in lt module gt import gyp ImportErr
  • webrtc和peerjs:如何选择H264而不是vp8?

    我确实使用peerjshttps peerjs com在 2 个对等点之间建立连接 有没有办法强制使用 H264 代码而不是 VP8 Regards Update 您可以使用设置编解码器首选项一旦浏览器支持 即可达到相同的结果 旧答案 您必
  • Perl:具有共享多维哈希的线程

    我正在尝试在多个线程上共享多维哈希 这个哈希保存了2个连接的密钥对 我需要知道它们是否已经连接 如果没有 我需要连接它们 如果没有 则不需要去数据库 use threads use threads shared my FLUobject2p
  • jquery getJSON函数计时问题

    我认为我的程序正在跳过 JSON 调用的结果 是否可以在此处创建一个闭包函数或让程序等待 JSON 调用返回 function username not duplicate username var function name get us
  • 我可以将图像转换为 CSS3 吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 假设我有一个像这样的多边形图像PNG文件 没有边框 形状填充一种颜色 没有渐变 图像背景是透明的 http www enchantedlearnin
  • 拖放后将 RecyclerView 项存储在 SQLite 中的新位置

    我有一个二维ArrayList类型的String这是适配器类的输入RecyclerView 列表中的数据每次都从 SQLite 数据库中获取onResume 叫做 我已经实现了拖放功能和onMove 成功交换列表元素的函数 但是 我需要先存
  • CKEditor 5 显示视频元素,但插入 div 中的纯 HTML 不显示该元素

    我正在创建一个课程编辑器 用户可以编辑内容 文本 视频 链接 图像等 或查看最终结果 渲染的 html 编辑器工作正常 但是当我显示渲染的 html 时 链接的 YouTube 视频不可见 这是编辑器部分 您可以看到链接的视频可见 这是 渲
  • Mathematica 中 == 和 === 的区别

    我的印象是 是一个作业 是数字比较 并且 是一个符号比较 以及在其他一些语言中 being equal to and being identical to 然而 看看下面的内容 情况似乎不一定如此 In x x Out True In x
  • 如何使用 Content-MD5 将对象放入 s3

    我尝试使用 boto3 将 XML 文件上传到 S3 根据亚马逊的建议 我想发送数据的 Base64 编码 MD5 128 位摘要 Content MD5 https docs aws amazon com AmazonS3 latest
  • Laravel 与 Docker 连接 MySQL 的问题

    我使用 Docker 设置 Laravel 的步骤 在我的本地系统中 我没有安装 PHP Composer Apache MySQL phpMyAdmin 等 我的系统中只安装了 Git 和 Docker 克隆https github co