Laradhoc —— 一个简单高效的 Laravel Docker 方案

Laravel

tl;dr

Laradhoc托管在GitHub 上,是我基于Docker 的基本开发环境,用于运行 Laravel 应用程序。

你可以Check到本地并随意尝试,进行fork,提出问题或提出要求。 我很高兴听到您的建议,纠正错误并学习新知识 ?

在Laravel之前

我从Laravel4开始就是一个开发人员和它的爱好者。
我喜欢它。
在Laravel之前,有“CodeIgniter.”甚至在出现纯php⚠️之前。如果我回到原点(说到php开发),我记得很多程序代码,大量的意大利面条?(译者:瀑布流编程哈哈哈哈),include手册,无数无意识的漏洞,php/html和Javascript疯狂混合等等。?
没有OOP(面向对象),没有Composer,没有psr-2,没有框架,没有SOLID原则,设计模式,单元测试等等,啥也没有。??‍♂️

依赖注入、服务容器、零停机部署、缓存、CLI工具、队列工作者。。。这都是些啥??
好多好多年以来,技术栈和编程思维(译者:原文未提及变化了什么,此为意译)一直在变化,并且速度越来越快。

Y A W N ? 我们说的是代码,而不是开发环境

让我们回到主题。
基本上,在我的PHP开发过程中,我经历了各种阶段,现在我尝试将他们做个总结。

一个快速的 (?) 搭建开发环境的过程

1 - Manual / WAMP

在主机上安装所有内容,字面意思就是“手动”。
我曾经使用Windows工作,我手动下载了一个带有我需要的PHP版本的zip文件。Apache也是。没有CLI。只有一个Windows服务和一堆要编辑的配置文件。

需要更新吗?需要的话就得重复同样的步骤,还要祈祷什么都不会影响现有东西?

老实说,技术栈的变化并不是这么快。所以这没什么大不了的。

哦,当然也有像WAMP这样的 “集成环境方案”,但老实说,我并不是它的吹捧者。它们可以让你的生活更轻松,但我更愿意深入了解“building blocks(构成要素)”。

2 - Vagrant / Homestead

当我发现Vagant,Homestead和这些基于VM(虚拟)的解决方案时,我当时就震惊了,“WOW?针对不同应用程序的不同配置?太神奇了!”。
另一个优势:在相同的开发团队中共享具有其设置的相同虚拟机的能力,无论你的主机是基于Windows还是基于MacOS(即使我记得它并不总是这样.)都无妨。
但这些虚拟机非常大,很重,性能不是很好。

3 - Docker!

这之后,我发现了Docker!
这是我和我的团队目前用于本地开发的解决方案。

为什么是Docker?

在我看来,Docker 简直是生命之光,还有GIT,完全就是天才?.

这里不想解释为什么?,它带来了哪些巨大的好处,以及为什么你应该尽快投入使用:有很多文章解释了所有这些概念,比我做的要好得多。

让我只写几句话:除了你的应用程序代码(例如你的私有GIT存储库),你还(通过一个或几个配置文件)提供确切的^基础配置^不用在意他们是如何进行配置的,以及他们如何在docker中之间进行交互。不管你使用的是WindowsLinux还是MacOS。几乎就像是下载,播放,等等….超级便利,就可以开箱即用了?

最后一个方面对我来说非常重要:我主要在MacOS上开发,也在Windows 10上开发(使用WSL)。所以,对我来说,能够有解决方案在任何地方都有效是非常重要的。

我是如何接触Docker的?

当我刚听到有docker这个消息时,一开始我有点害怕?。
就像是“听起来很棒,但不是那么容易学…这是另一个需要学习的东西,我没有时间,Homestead工作得很好,balabala”。你知道的,这都是借口

在业余时间,我开始阅读一些文章,观看一些视频,并尝试熟悉Docker术语:images, containers, docker-compose, volumes, etc.等
但我仍然找不到修改工作流程的具体动力(laziness)

然后我开始使用一些基于Docker的解决方案/产品(让我称它们为Docker supersets wrappers ),它们很容易设置并且它们完全(或几乎)隐藏了 潜在的复杂性(即使不是那么复杂)?.

这有几个名字:

  • Local by Flywheel 需要一个快速的方法在本地运行WordPress博客/应用程序吗?这是一个非常简单直接的解决方案
  • Laradock一个完整且高度可配置的解决方案,用于运行Laravel,但是我很快发现它设置起来非常复杂
  • Lando这是目前为止我最喜欢的基于Docker的工具*。你可以将它用于LaravelWordPress和许多其他应用程序。它只需要在.yaml文件中定义堆栈(服务、版本、配置等),你就可以在存储库中提交该文件。等一下!你一定想试试。

Docker 的手动方式,Laradhoc

前面提到的产品有什么问题?什么都没有!
好吧,大概是这样的 ?
例如,我一直喜欢的LANDO,它在引导中不是那么快。
另一个缺点是:LANDO需要一个特定的锁定版本的Docker。我记得有一次,在升级Docker(通过自动更新)后,Lando突然崩溃了,我一脸懵逼。经过多次测试和一些搜索,在GitHub中找到了问题,我终于明白我必须降级Docker。

同样,于Laradock:这些产品本来是要开箱即用的,但过不了多久,你会体验到一种新的体验,它在MacOS上工作,而不是在Windows(或viceversa)上,或者是一种特定的设置或服务组合/导致意外行为的版本。

但这不是主要原因。我们都知道完美的软件并不存在(特别是你编写的软件,?非常自豪),每个产品迟早都会遇到一些问题,bug,意想不到的行为等等。

那么,这又怎么了???‍♂️

开始使用这些产品后,我变成了好奇宝宝?,想了解更多关于Docker的信息。我想自己试验,理解并实践我在前几个月读到的所有概念。
我读了更多的文章,看了几个开源存储库,然后我试着总结出我在日常开发人员生活中可以使用的项目中的所有东西。
经过一些最初的怀疑后,我对自己说:

好吧,让我们试着“不要脸一些”。我想把我的项目放在GitHub上,即使我在开源方面几乎没有经验。怎么了?最坏的情况下,有人会说“这是错误的!”或者“这是怎么做的”,不过在这两种情况下,我都会学到一些东西。

Laradhoc

Laravel 专用 环境.我只是想为我的需求量身订做一些东西。
当然它不用像Lando那样完整。
但需要它在引导(当然,在下载所有映像之后,在第一次构建之后)是快速,并且足够完整来运行我的项目。
我不想太严格,所以我甚至囊括了一些我通常不需要的服务需要(例如phpMyAdmin,不过我更喜欢使用一个SQL客户端)。

我试图解释README.md中的所有内容,总之就是一个非常快速的概述。

特性

  • Nginx
  • PHP 7.4 with OPCache
  • MySql 8
  • phpMyAdmin
  • Mailhog
  • Redis
  • Custom domain name (laradhoc.test 或者 laradhoc.test) HTTP or HTTPS (with self-signed SSL certificate)

它自带一些有用的bash脚本*来启动/停止容器,运行composer,执行php artisan和所有与Laravel相关的主要东西。

试试看!

github.com/eleftrik/laradhoc

正如我已经说过的,如果能知道你的想法,那我肯定会很开心的!
希望你能随时要求一些新功能或提出一些更好的实现。

感谢你您的阅读,祝你写出漂亮的编码! ?

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://dev.to/eleftrik/laradhoc-dockeri...

译文地址:https://learnku.com/laravel/t/43665

本文为协同翻译文章,如您发现瑕疵请点击「改进」按钮提交优化建议
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!