聊聊关于Mac Laravel docker sail 搭建问题

                                                                               

先写段独白

两年多没用php写过代码了,现在从新捡起来,以前用tp,但tp的版本更新很不友好,所以这次一步到位用laravel。先docker环境开始吧,我会一边尝试一边写,也欢迎大家和我互动,多教我一些东西。我也希望我的新手经验可以帮到一些人。

【推荐:laravel教程】

一. docker Desktop安装

论坛里详细教程

二. 运行容器(遇到「坑」了!)

我就是按照教程一步一步操作的,直到第六步我的运行并没有很顺利,出现了以下情况

ERROR: Service 'laravel.test' failed to build : Build failed

我在仔细看了一下日志,错误出现在

#9 7.166 Some packages could not be installed. This may mean that you have#9 7.166 requested an impossible situation or if you are using the unstable#9 7.166 distribution that some required packages have not yet been created#9 7.166 or been moved out of Incoming.#9 7.166 The following information may help to resolve the situation:#9 7.166#9 7.166 The following packages have unmet dependencies:#9 7.262  gnupg : Depends: gpgv (< 2.2.19-3ubuntu2.1.1~) but 2.2.20-1ubuntu3 is to be installed#9 7.264  perl : Depends: perl-base (= 5.30.0-9ubuntu0.2) but 5.32.1-3ubuntu2.1 is to be installed#9 7.264         Recommends: netbase but it is not going to be installed#9 7.264  perl-base : Breaks: perl (< 5.32.1~) but 5.30.0-9ubuntu0.2 is to be installed#9 7.265  zlib1g-dev : Depends: zlib1g (= 1:1.2.11.dfsg-2ubuntu1.2) but 1:1.2.11.dfsg-2ubuntu6 is to be installed#9 7.265               Depends: libc6-dev but it is not going to be installed or#9 7.265                        libc-dev#9 7.283 E: Unable to correct problems, you have held broken packages.

有很多依赖貌似有问题

#9 7.262  gnupg : Depends: gpgv (< 2.2.19-3ubuntu2.1.1~) but 2.2.20-1ubuntu3 is to be installed

应该是更高的版本被安装了,于是我尝试替换apt-get使用aptitudeapt-get 不同的是,aptitude 在处理依赖问题上更佳一些。举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。这样,系统中不会残留无用的包,整个系统更为干净。

于是我调整了一下Dockerfile

RUN apt-get update     && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 

变成了

RUN apt-get update     && apt-get install -y aptitude     && aptitude install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3 libcap2-bin libpng-dev python2 

再次运行
./vendor/bin/sail up
情况变得不同了,但依然报了错误

#9 32.31 E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation

并没有安装成功,只是执行了过去
又尝试了apt-get install -f但依然没什么效果

好吧,换个思路观察了一下,既然说的更高版本已经安装,那我就基于更高的ubuntu去做,于是我修改了FROM,从

FROM ubuntu:21.04

改到了

FROM ubuntu:latest

好吧,新的依赖问题来了

AI建筑知识问答 AI建筑知识问答

用人工智能ChatGPT帮你解答所有建筑问题

AI建筑知识问答 22 查看详情 AI建筑知识问答

#9 44.96 Some packages could not be installed. This may mean that you have#9 44.96 requested an impossible situation or if you are using the unstable#9 44.96 distribution that some required packages have not yet been created#9 44.96 or been moved out of Incoming.#9 44.96 The following information may help to resolve the situation:#9 44.96#9 44.96 The following packages have unmet dependencies:#9 45.08  php8.0-bcmath : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-cli : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08               Depends: php8.0-opcache but it is not going to be installed#9 45.08               Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08               Depends: libxml2 (>= 2.8.0) but it is not going to be installed#9 45.08  php8.0-curl : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-dev : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08               Recommends: pkg-php-tools but it is not going to be installed#9 45.08  php8.0-gd : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-igbinary : Depends: php8.0-common but it is not going to be installed#9 45.08  php8.0-imap : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-intl : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08                Depends: libicu67 (>= 67.1-1~) but it is not installable#9 45.08  php8.0-ldap : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-mbstring : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-memcached : Depends: php8.0-common but it is not going to be installed#9 45.08  php8.0-msgpack : Depends: php8.0-common but it is not going to be installed#9 45.08  php8.0-mysql : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-pcov : Depends: php8.0-common but it is not going to be installed#9 45.08                Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08  php8.0-pgsql : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-readline : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-redis : Depends: php8.0-common but it is not going to be installed#9 45.08  php8.0-soap : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08                Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08                Depends: libxml2 (>= 2.7.4) but it is not going to be installed#9 45.08  php8.0-sqlite3 : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08  php8.0-swoole : Depends: php8.0-common but it is not going to be installed#9 45.08                  Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08  php8.0-xdebug : Depends: php8.0-common but it is not going to be installed#9 45.08                  Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08  php8.0-xml : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08               Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08               Depends: libxml2 (>= 2.9.0) but it is not going to be installed#9 45.08               Depends: libxslt1.1 (>= 1.1.25) but it is not going to be installed#9 45.08  php8.0-zip : Depends: php8.0-common (= 8.0.12-1+ubuntu21.04.1+deb.sury.org+1) but it is not going to be installed#9 45.08               Depends: libc6 (>= 2.33) but 2.31-0ubuntu9.2 is to be installed#9 45.08               Depends: libzip4 (>= 1.7.0) but it is not installable#9 45.10 E: Unable to correct problems, you have held broken packages.

搜索了一下,貌似找到了一个解决方案

 Solve it with downgrade sail composer require laravel/sail:^1.7.0 php artisan sail:install and in ubuntu terminal sail up --build

好,继续尝试,首先运行

composer require laravel/sail:^1.7.0

发现报错,具体错误忘记了。
我看了一下php版本是7.x于是使用
brew install php 发现报错

Error: Failure while executing; `cp -pR /var/folders/vq/934y4t116875gz570v8drdcm0000gn/T/d20211115-17671-1n3qf1o/openssl@1.1/. /usr/local/Cellar/openssl@1.1` exited with 1. Here's the output:cp: utimes: /usr/local/Cellar/openssl@1.1/.: Operation not permittedcp: chmod: /usr/local/Cellar/openssl@1.1/.: Operation not permitted

看了一下是没权限,使用sudo brew install php

Error: Running Homebrew as root is extremely dangerous and no longer supported.As Homebrew does not drop privileges on installation you would be giving allbuild scripts full access to your system.

发现sudo不支持。
于是sudo chown -R $(whoami) /usr/local/Cellar改变目录权限
正常运行
使用php -v看了一下版本,还是7.0
使用
brew unlink php70
brew link php
sudo vim ~/.bash_profile
在文件末尾追加

PATH="$(brew --prefix php)/bin:$PATH"export PYTHON_ENV=development

php -v
php8.0安装成功

PHP 8.0.12 (cli) (built: Oct 21 2021 14:49:05) ( NTS )Copyright (c) The PHP GroupZend Engine v4.0.12, Copyright (c) Zend Technologies

继续

composer require laravel/sail:^1.7.0

发现没有没有找到,想到可能是国内composer源有问题

[InvalidArgumentException] Could not find package laravel/laravel with stability stable

我是安装了composer 的中国镜像,其实就是composer 的中国镜像出了问题,后来我直接把他改了,换成另外一个地址就行了

composer config -g repo.packagist composer https://packagist.org

成功。
第二步

php artisan sail:install

成功。
第三步

sail up

成功。解决问题。
最后localhost
Laravel docker sail 搭建

以上就是聊聊关于Mac Laravel docker sail 搭建问题的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/370820.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月6日 07:29:16
下一篇 2025年11月6日 07:32:30

相关推荐

  • PHP如何过滤数据库查询_PHP数据库查询安全规范

    答案是全面采用预处理语句并结合输入验证、最小权限原则和输出转义等多层防御措施。核心在于不信任用户输入,使用PDO或MySQLi的预处理功能将SQL逻辑与数据分离,通过绑定参数防止恶意代码执行;同时对动态查询部分采用白名单机制或动态生成占位符,在确保安全的前提下实现灵活性。 数据库查询的安全性,在我看…

    2025年12月11日
    000
  • PHP怎么设置路由_PHP路由配置与重写方法

    路由是PHP程序响应URL请求的核心机制,它将不同URL映射到对应处理逻辑。在Laravel等框架中,通过Route::get(‘/users/{id}’, ‘UserController@show’)定义路由,框架自动解析URL并传递参数给控制器方法…

    2025年12月11日
    000
  • Laravel 中保持下拉列表选择状态的教程

    本文旨在解决 Laravel 应用中,在表单提交后下拉列表重置的问题。通过利用 Laravel 的请求对象,我们可以轻松地在页面刷新后保持用户在下拉列表中所做的选择,提升用户体验。本文将详细介绍如何实现这一功能,并提供示例代码和注意事项。 在 Laravel 应用中,表单提交后页面刷新,下拉列表恢复…

    2025年12月11日
    000
  • php如何实现一个简单的REST API?php构建RESTful API基础教程

    核心是通过PHP处理HTTP请求并返回JSON响应。需设计URI、选择HTTP方法、实现路由与数据处理。示例中根据GET请求返回用户信息,支持单个或全部用户查询,并返回对应状态码。POST请求通过解析php://input获取JSON数据,验证后创建新用户并返回201状态码。安全方面需过滤输入防止注…

    2025年12月11日
    000
  • Laravel 中表单提交后如何保持下拉列表的选中状态

    本文旨在解决 Laravel 应用中表单提交后下拉列表(select)重置的问题。通过利用 Laravel 提供的 request 对象和旧输入值功能,我们能够轻松地在页面刷新后保持用户在下拉列表中选择的选项,从而提升用户体验。本文将详细介绍如何在视图中正确地处理下拉列表的选中状态,并提供相应的代码…

    2025年12月11日
    000
  • Laravel 中下拉列表选择后重置问题的解决

    本文旨在解决 Laravel 应用中下拉列表在提交后重置的问题。通过利用 Laravel 的请求对象,我们将演示如何在页面刷新后保持用户在下拉列表中选择的选项,从而提升用户体验。文章将提供详细的代码示例和解释,帮助开发者轻松实现该功能。 在 Laravel 应用中,经常会遇到需要在表单提交后保持用户…

    2025年12月11日
    000
  • Laravel Redis队列任务清理指南:兼顾旧版本与Laravel 8+

    本文详细介绍了在Laravel应用中清空Redis队列任务的方法。对于Laravel 8及更高版本,可使用内置的php artisan queue:clear命令;而对于Laravel 8之前的版本,则需通过创建自定义Artisan命令来直接操作Redis键,实现队列任务的快速清理,尤其适用于开发环…

    2025年12月11日
    100
  • PHP如何防止SQL注入_PHP防范SQL注入攻击的核心策略

    防范SQL注入的核心是预处理语句,它通过将SQL逻辑与数据分离,确保用户输入始终作为数据处理;结合参数绑定,使用PDO或MySQLi扩展可有效阻止恶意SQL执行,从根本上避免注入风险。 PHP防范SQL注入的核心策略,毫无疑问是采用预处理语句(Prepared Statements)配合参数绑定(P…

    2025年12月11日
    000
  • 精确控制JavaScript定时任务:实现整点弹窗与桌面通知

    本文详细阐述了如何利用JavaScript精确控制定时任务,以实现在指定时间(例如每小时的整点)触发弹窗或发送桌面通知。通过结合短间隔定时器、日期对象判断和防重复触发机制,解决了传统setInterval无法实现整点触发的问题,并提供了完整的代码示例及桌面通知的实现方法。 1. 理解传统定时器的局限…

    2025年12月11日
    000
  • 在 Laravel Nova 中通过邮件发送文件附件的教程

    在 Laravel Nova 环境下,通过 Mailable 类为电子邮件添加文件附件是一项常见需求。本教程将详细指导您如何实现这一功能,涵盖从 Nova Resource 定义到 Mailable build 方法中附件功能的实现,包括如何获取文件路径、使用 attach 方法以及相关注意事项,确…

    2025年12月11日
    000
  • Laravel教程:高效展示项目标题及其关联问题列表

    本教程旨在指导您如何在Laravel应用中高效地展示特定项目的标题及其关联问题列表。通过优化控制器逻辑,将完整的项目模型传递至视图,并利用Eloquent关系在视图中直接访问项目属性及循环其关联问题,从而实现代码的简洁与逻辑的清晰,提升开发效率与代码可维护性。 在构建项目管理或任务追踪系统时,一个常…

    2025年12月11日
    000
  • php中的匿名函数(闭包)如何使用?PHP匿名函数与闭包使用指南

    答案:PHP匿名函数即闭包,可赋值给变量、作为参数传递,并通过use捕获外部变量;值捕获复制变量,引用捕获(&)可修改外部变量;常用于回调、事件处理和路由定义;需注意避免过度嵌套、误用引用及调试困难,建议保持简洁、明确use变量并合理使用类型提示。 PHP中的匿名函数,通常我们称之为闭包(C…

    2025年12月11日
    000
  • php如何统计代码执行时间 php脚本性能分析与执行时间计算

    使用microtime()或hrtime()测量PHP代码执行时间,结合Xdebug、Blackfire、Tideways、xhprof/xhgui或APM工具进行性能分析,通过优化数据库查询、循环、算法及使用缓存等方式提升性能。 直接告诉你,用 microtime() 函数,配合一些简单的数学运算…

    2025年12月11日
    000
  • php中的魔术方法__get和__set怎么用?PHP魔术方法__get与__set使用指南

    __get和__set用于拦截对象中不存在或不可访问属性的读写操作,实现动态属性访问、数据验证与惰性加载,常用于配置管理、ORM及代理模式,但需注意性能开销、可读性及IDE支持等问题。 PHP中的魔术方法 __get 和 __set 主要用于处理对象中“不存在”或“不可访问”的属性。简单来说,当你尝…

    2025年12月11日
    000
  • MySQL与PHP:高效判断指定时间是否落在数据库日期区间内

    本教程详细阐述如何利用MySQL的BETWEEN操作符和DATE()函数,结合PHP实现高效且准确的日期时间区间判断。文章将指导读者优化SQL查询,避免冗余格式化,并区分全天候与精确时间比较两种场景。同时,将介绍通过SELECT 1 LIMIT 1提升查询存在性判断的性能,确保在数据库中快速验证指定…

    2025年12月11日
    000
  • 在Laravel应用中获取调用辅助函数的控制器和方法

    本文探讨了在Laravel辅助函数中,如何在不显式传递参数的情况下,动态获取调用该辅助函数的控制器名称及其方法。通过利用PHP的调试回溯机制,特别是借助spatie/backtrace包,可以高效且可靠地实现这一目标。文章提供了两种实现方案:直接在辅助函数中集成回溯逻辑,以及通过修改Laravel的…

    2025年12月11日
    000
  • 高效管理Laravel数据库队列:取消与清理策略

    本文深入探讨了Laravel框架中基于数据库的队列任务管理,特别是如何有效取消和清理待处理及已失败的任务。我们将详细介绍Laravel Artisan命令在批量管理任务方面的应用,并阐明在特定场景下,如何通过直接数据库操作来精确取消单个待处理任务,同时强调了操作的注意事项与最佳实践,以确保队列系统的…

    2025年12月11日
    000
  • Laravel 数据库队列:取消延迟任务与管理策略

    本文详细探讨了在 Laravel 应用程序中使用数据库队列时,如何有效取消和管理待处理任务。我们将介绍直接删除数据库记录的原理,并重点讲解 php artisan queue:clear 等命令行工具,以确保任务取消的正确性和系统稳定性,尤其针对延迟任务和重试机制。 在使用 laravel 构建应用…

    2025年12月11日
    000
  • 在 Laravel 中实现最近浏览商品功能及常见问题解决

    本文详细介绍了如何在 Laravel 7+ 中利用 Cookie 实现“最近浏览商品”功能。教程涵盖了从商品数据存储、Cookie 管理(包括 JSON 编码/解码、去重、数量限制)到前端 Blade 模板展示的完整流程。特别强调了在操作 Cookie 时保持键名一致性的重要性,以避免常见的逻辑错误…

    2025年12月11日
    000
  • php如何设置HTTP状态码?PHP HTTP状态码设置指南

    PHP中设置HTTP状态码主要用header()或http_response_code()函数,后者更简洁安全;需避免输出后设状态码、滥用302重定向等误区;在RESTful API中应准确使用状态码以明确请求结果、简化客户端逻辑;结合自定义错误页面和异常处理机制可提升用户体验与系统健壮性。 在PH…

    2025年12月11日
    000

发表回复

登录后才能评论
关注微信