使用 Laradock 搭建基于 Docker 的 PHP 开发环境 | 快速入门 | Laravel 5.5 中文文档


本站和网页 https://xueyuanjun.com/post/7691.html 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

使用 Laradock 搭建基于 Docker 的 PHP 开发环境 | 快速入门 | Laravel 5.5 中文文档
Laravel 学院
文档
Laravel 8.x 中文文档
Laravel 7.x 中文文档
Laravel 6.x 中文文档
Laravel 5.8 中文文档
Laravel 5.7 中文文档
Laravel 5.6 中文文档
Laravel 5.5 中文文档
Laravel 5.4 中文文档
Laravel 5.3 中文文档
Laravel 5.2 中文文档
Laravel 5.1 中文文档
Lumen 中文文档
全栈教程
PHP 全栈工程师指南
PHP 入门到实战
Laravel 入门到精通
Vue.js 入门到实战
玩转 PhpStorm 教程
Laravel 博客入门项目
Laravel 微信小程序项目
Laravel 前后端分离项目
Swoole 入门到实战
Eloquent 性能优化实战
Redis 高性能实战系列
Laravel 新版本特性
PHP 新特性与最佳实践
Golang
Go 入门教程
Go Web 编程
Gin 使用教程
微服务开发
内功修炼
数据结构与算法
网络协议
微服务从入门到实践
高性能 MySQL 实战
高性能 Redis 实战
Laravel 消息队列实战
Laravel 从学徒到工匠
PHP 设计模式系列
名企面试指南
资源库
Laravel 资源大全
Laravel 开源项目
Laravel 扩展包
Laravel 资源下载
更多
博客 & 新闻
问答 & 讨论
Leetcode 题解
学院君读书笔记系列
关于 Laravel 学院
Laravel 互助学习群
Golang 互助学习群
更多
Laravel 中文文档
Laravel 全栈教程
Laravel 学习路径
Go 入门教程
程序员内功修炼
博客
问答
搜索
注册
登录
Info
Content
章节导航
Laravel 5.5 中文文档
目录索引
序言
2篇文章
新版特性
升级指南
快速入门
6篇文章
安装配置篇
目录结构篇
重量级开发环境:Homestead 安装使用详细教程
轻量级开发环境:Valet 安装使用详细教程
使用 Laradock 搭建基于 Docker 的 PHP 开发环境
使用 Laragon 在 Windows 中搭建 Laravel 开发环境
核心架构
5篇文章
一次 Laravel 请求的生命周期
服务容器
服务提供者
门面(Facades)
契约(Contracts)
基础组件
14篇文章
Laravel 应用的入口:路由系列之基础入门篇
Laravel 应用的入口:路由系列之参数、命名和分组篇
Laravel 应用的入口:路由系列之路由模型绑定篇
HTTP 请求的过滤器:中间件
使用中间件 VerifyCsrfToken 避免 CSRF 攻击
HTTP 请求的处理层:控制器
HTTP 请求参数获取、Cookie设置及文件上传
HTTP 响应、重定向及文件下载
Laravel 视图渲染:Blade 模板引擎
Laravel 视图的创建和数据传递
辅助函数篇:请求 URL 生成
Session 实现、配置与使用详解
请求表单验证及错误处理大全
异常处理 & 错误日志
前端开发
3篇文章
视图渲染本地化:让你的应用轻松实现多语言支持
快速入门:JavaScript & CSS 脚手架
使用进阶:通过 Laravel Mix 编译前端资源
安全系列
6篇文章
在 Laravel 中实现用户注册登录认证
使用 Laravel Passport 实现 API 认证
在 Laravel 中实现对资源操作的权限控制
在 Laravel 中对敏感数据进行加密解密
使用哈希算法在 Laravel 中实现密码加密
如何在 Laravel 中实现密码重置功能
数据库操作
5篇文章
快速入门:基本配置和使用、读写分离 & 数据库事务
使用进阶:通过查询构建器实现高级功能
在 Laravel 中轻松实现分页功能
数据库迁移:以版本控制的方式维护数据表
数据库填充器:初始化测试数据的好帮手
Eloquent模型
6篇文章
入门篇:使用 Eloquent 模型进行数据库操作
进阶篇:使用 Eloquent 模型管理关联关系
Eloquent 查询返回的数据格式:集合
使用访问器和修改器格式化模型数据
API 资源类:架起模型与 JSON API 之间的桥梁
将模型数据序列化为数组或 JSON
进阶系列
13篇文章
使用 Artisan 构建强大的控制台应用
通过事件和事件监听器实现服务解耦
Laravel 队列系统实现及使用教程
Laravel 中服务端与客户端事件广播实现
通过缓存构建高性能 Laravel 应用
键值对存储系统 Redis 在 Laravel 中的使用
集合:给 PHP 数组插上翅膀
辅助函数:简化 Laravel 代码编写的利器
集成 Flysystem 实现对文件系统的高级操作
在 Laravel 中实现邮件配置、预览和发送
在 Laravel 中使用多种通道实现通知发送
Laravel 自定义扩展包的开发和使用
定时任务调度在 Laravel 中的实现
测试
5篇文章
快速入门:集成 PHPUnit 编写测试用例
HTTP 测试:如何测试 HTTP 请求和响应
浏览器测试:使用 Laravel Dusk 进行浏览器测试
数据库测试:模型工厂生成及使用
模拟:通过伪造事件、邮件、通知、队列、文件存储等服务简化测试
官方扩展包
5篇文章
订阅支付解决方案:Laravel Cashier
远程操作解决方案:Envoy Task Runner
队列系统解决方案:Laravel Horizon
全文搜索解决方案:Laravel Scout
第三方登录解决方案:Laravel Socialite
图书
Laravel 5.5 中文文档
快速入门
使用 Laradock 搭建基于 Docker 的 PHP 开发环境
使用 Laradock 搭建基于 Docker 的 PHP 开发环境
由 学院君 创建于5年前, 最后更新于 1周前
版本号 #2
158869 views
35 likes
5 collects
简介
Laradock 是为 Docker 提供的完整 PHP 本地开发环境,和 Homestead 一样提供了一系列打包好(包括配置)的 Docker Image。Laradock 早期专注为 Laravel 打造 Docker 开发环境,因而最早在 Laravel 社区中出名,后来随着影响力的扩大,逐渐被 PHP 社区接纳和采用,目前支持的 PHP 项目除了 Laravel 之外,还有 Symfony、CodeIgniter、WordPress、Drupal 等等。
Docker 扫盲
在学习和使用 Laradock 之前,我们有必要先学习和了解 Docker,而在使用 Docker 之前,又有必要搞清楚下面两个问题:
Docker 是什么
Docker 基于 Go 语言开发,是一个基于 LXC 技术之上构建的 Container 容器引擎。容器是一种以固定格式打包软件的方式,以便让软件可以在共享的操作系统中运行,不同于虚拟机,容器并不需要捆绑这个操作系统,只需要软件正常工作所必须的库和设置即可,这使得容器更加高效、轻量级、可以自成系统并且不管部署在什么地方都可以保证运行结果一致。
Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕。开发者使用 Docker 可以解决当需要和同事共享代码时"只能在我的机器工作"的问题;操作者使用 Docker 可以在关联容器中边运行边管理以便获取更好的计算密度;企业使用 Docker 可以用来构建敏捷的软件分发管道以便可以更快处理新特性。
为什么要使用 Docker
Docker 的出现就是为了解决以下问题:
环境管理复杂: 从各种 OS 到各种中间件再到各种 App,一款产品能够成功发布,作为开发者需要关心的东西太多,且难于管理,这个问题在软件行业中普遍存在并需要直接面对。Docker 可以简化部署多种应用实例工作,比如Web应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个 Image 部署。
云计算时代的到来: AWS 的成功, 引导开发者将应用转移到云上, 解决了硬件管理的问题,然而软件配置和管理相关的问题依然存在。Docker 的出现正好能帮助软件开发者开阔思路,尝试新的软件管理方法来解决这个问题。
虚拟化手段的变化: 云时代采用标配硬件来降低成本,采用虚拟化手段来满足用户按需分配的资源需求以及保证可用性和隔离性。然而无论是 KVM 还是 Xen,在 Docker 看来都在浪费资源,因为用户需要的是高效运行环境而非 OS, GuestOS 既浪费资源又难于管理, 更加轻量级的 LXC 更加灵活和快速。
LXC的便携性: LXC在 Linux 2.6 的 Kernel 里就已经存在了,但是其设计之初并非为云计算考虑的,缺少标准化的描述手段和容器的可便携性,决定其构建出的环境难于分发和标准化管理。Docker就在这个问题上做出了实质性的创新方法。
Docker 通常用于如下场景:
Web 应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。
本教程不将那么多高大上的东西了,我们专注于通过 Docker 构建一个可移植的本地开发环境。
Docker 安装使用
首先我们需要在系统安装 Docker 的免费社区版,官方提供 Windows、Mac 及 Linux 等版本下载:下载地址。下载操作系统对应版本安装后,双击打开 Docker 应用,即可在命令行检查是否安装成功:
Mac
注:Windows 下使用 Docker 需启用 Hyper-V 组件。
快速上手
深入了解 Laradock 之前让我们先见识下如何在 Laradock 中快速安装 Nginx、PHP、Composer、MySQL、Redis 和 Beanstalkd 吧,有了这些开发 Laravel 必备的工具组件也就差不离了。
1、首先将 Laradock 项目代码克隆到本地:
git clone https://github.com/Laradock/laradock.git
2、进入 laradock 目录将 env-example 重命名为 .env:
cp env-example .env
3、运行容器:
docker-compose up -d nginx mysql redis beanstalkd
如果指定端口已经被占用,运行上述命令会报错,关闭相应的服务再重新运行上述命令即可。
4、打开项目的 .env 文件并添加如下配置:
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
5、要测试配置访问域名指向 Docker 环境目录,我们先在 laradock 父级目录下创建一个与 laradock 同级的 wwwroot 目录,然后在 wwwroot 目录下运行 laravel new blog 命令创建一个新的 Laravel 应用,相应的层级目录关系如下所示:
然后我们需要到 laradock 下编辑 .env 中的 APPLICATION 配置项:
APPLICATION=../wwwroot/
注:最新版本的 laradock 对应的配置项是 APP_CODE_PATH_HOST。
这样就相当于为 wwwroot 与 Docker 的 /var/www 目录建立了软链接,然后我们修改 laradock/nginx/sites/default.conf 中的映射关系:
接下来,需要重启 Docker 的 Nginx:
docker-compose up -d nginx
这样,我们就可以在浏览器中通过 http://localhost 访问这个应用了,当然,如果需要的话,也可以将 localhost 换成任意你想要的域名,不过还需要配置 /etc/hosts 和 laradock/nginx/sites/default.conf 里面的域名信息:
以上就是 Laradock 的简单上手指南。这里我们设置的场景是新建一个应用,如果是多个应用的话要怎么办呢?也很简单,就是在上述 wwwroot 目录下创建多个应用目录,然后在 laradock/nginx/sites 下对应创建多个配置文件,最后不要忘记在系统 /etc/hosts 中配置相关域名绑定 IP 即可。
注:更多使用细节请参考官方文档:http://laradock.io/documentation/
功能特性
最后,我们来捋一下 Laradock 的功能特性:
可轻松在不同版本 PHP 之间切换: 7.1、7.0、5.6 等
自由选择数据库: MySQL、Postgres、MariaDB 等
运行自己的软件: Memcached、HHVM、Beanstalkd 等
每个软件都运行在隔离的容器中: PHP-FPM、NGINX、PHP-CLI 等
轻松自定义容器,只需编辑 Dockerfile 文件即可
所有的镜像都扩展自官方的镜像
预配置的 NGINX
可以在每个项目中使用 Laradock, 也可以让所有项目共享一个 Laradock
使用环境变量在容器中轻松安装/卸载软件
干净、结构良好的 Dockerfile
最新版本的 docker-compose 文件
一切均可见、可编辑
快速构建镜像
除此之外,目前为止,Laradock 支持的软件包括但不限于:
数据库引擎: MySQL - MariaDB - Percona - MongoDB - Neo4j - RethinkDB - MSSQL - PostgreSQL - Postgres-PostGIS.
数据库管理工具: PhpMyAdmin - Adminer - PgAdmin
缓存工具: Redis - Memcached - Aerospike
Web 服务器: NGINX - Apache2 - Caddy
PHP 编译器: PHP FPM - HHVM
消息队列: Beanstalkd - RabbitMQ - PHP Worker
队列管理器: Beanstalkd Console - RabbitMQ Console
大国重器: HAProxy - Certbot - Blackfire - Selenium - Jenkins - ElasticSearch - Kibana - Mailhog - Minio - Varnish - Swoole - Laravel Echo 等
Laradock 还引入了 Workspace 镜像作为开发环境,里面包含了丰富且实用的工具集:PHP CLI - Composer - Git - Linuxbrew - Node - V8JS - Gulp - SQLite - xDebug - Envoy - Deployer - Vim - Yarn - SOAP - Drush 等
Laradock 还是 Homestead
最后,我们绕不开的话题是作为开发环境,选择 Docker(Laradock) 还是 Vagrant(Homestead),Mac 系统上官方还提供了 Valet,尝鲜的话、做Demo或者快速学习为目的当然 Valet 还是不二之选,因为它最小巧、最轻量级,上手最快,天下武功,唯快不破。
至于 Laradock 还是 Homestead,就是见仁见智了,就功能而言,两者不分伯仲。Laradock 相对 Homestead 而言更加轻量级,因为正如前面所言,Homestead 是 VM 级别的虚拟化解决方案,依赖一个完整的操作系统,虽然功能很全,但是很重,而 Laradock 是容器,只依赖那些它必需的软件,更加灵活,更加高效。
还有一点需要提及的是 Docker 可以用于本地也可以用于线上,所谓 same environment everywhere,而 Vagrant 部署的 Homestead 开发环境只能用于本地,这一点也可以作为重要考量因素。
Laravel
文档
安装
配置
Homestead
开发环境
Mac
Docker
虚拟化
LaraDock
5.5
容器
点赞
取消点赞
收藏
取消收藏
赞赏
分享到以下平台:
<< 上一篇:
轻量级开发环境:Valet 安装使用详细教程
>> 下一篇:
使用 Laragon 在 Windows 中搭建 Laravel 开发环境
181 条评论
#181
程序小工
评论于 1年前
正在删除评论...
laradock 的.env 文件修改了php版本是8.0
PHP_VERSION=8.0, 之后重启了nginx容器docker-compose up -d nginx, 但是实际phpinfo()输出的还是php 7.3.28,laradock_php-fpm 里php -v 也是7.3.28, 想请教下这个要怎么处理能切换到8.0
&lsaquo;
...
11
12
13
14
15
16
17
18
19
&rsaquo;
登录后即可添加评论
升级为学院君订阅用户(新年优惠🎁)
内容导航
简介
Docker 扫盲
Docker 安装使用
快速上手
功能特性
Laradock 还是 Homestead
相关推荐
Laravel Valet(Mac开发环境)
Laravel 5.2 中文文档
起步
基于 LaraDock 在 Docker 中快速构建 Laravel 应用系列教程 —— 搭建开发环境
博客
安装配置篇
Laravel 5.5 中文文档
快速入门
重量级开发环境:Homestead 安装使用详细教程
Laravel 5.5 中文文档
快速入门
Mac下用 laradock 搭建 Laravel 开发环境
博客
回到顶部
2022 基于 Laravel 6 构建
关于学院
订阅服务
友情链接
站点地图
本站 CDN 加速服务由又拍云赞助