通过 Laravel Sail 构建基于 Docker 的本地开发环境

2020-12-22 15:38:46 浏览数 (1)

Laravel 官方最近发布了 Laravel Sail —— 一个轻量级的、基于 Docker 的 Laravel 本地集成开发环境,今天学院君就以 Mac 系统为例,给大家演示下如何基于 Laravel Sail 来构建这个本地开发环境。

Laravel Sail 本身适用于 Mac、Windows、Linux 全平台,使用之前,需要确保本地已经安装过适用于本系统的 Docker Desktop。

首先,通过如下全新的安装命令初始化一个新的 Laravel 项目 redis-demo(项目名称可任意设置):

代码语言:javascript复制
curl -s https://laravel.build/redis-demo | bash

通过终端输出可以看到,该安装流程会先拉取 laravelsail/php80-composer 这个 Docker 镜像(包含 PHP 和 Composer),而后在当前目录下新建这个 Laravel 项目:

如果在 Updating dependencies 之后长期没有反应,或者提示 Composer 下载超时异常,可以直接下载学院君提供的 Laravel 8.x 一键安装包,其中包含了对 Sail 的支持(点击本文底部左下角「阅读原文」即可获取下载链接)。

项目初始化成功后,即可进入 redis-demo 项目,然后通过 Sail 提供的 up 命令启动 Sail,首次启动会拉取 MySQL、Redis 镜像:

如果之前启动了 Valet 或者 Laradock 作为本地开发环境,需要通过 valet stop 或者 docker-compose down 命令关闭对应的 Nginx、MySQL、Redis 服务,以免出现端口冲突。

Sail 本质上是基于 Docker Compose 编排的 Docker 容器服务构建起来的 Laravel 集成开发环境(包含 PHP、MySQL、Redis),只不过针对 Laravel 项目做了上层封装和兼容,你不需要了解任何关于 Docker 容器的知识,就可以通过 Sail 文档提供的命令满足日常开发需求,这极大降低了基于 Docker 搭建 Laravel 本地开发环境的入门门槛。

docker-compose 一样,你可以通过 -d 选项指定以后台守护进程的方式来启动所有相关容器服务:

所有容器服务启动成功后,就可以在浏览器中通过默认的 laravel.test 域名来访问这个新建的项目了:

当然,你也可以通过修改项目根目录下 docker-compose.yml 文件中默认的应用服务名称来调整域名:

代码语言:javascript复制
services:
    redis.test:
        ...

调整之后,先停掉所有服务,再重新启动,让变更生效:

代码语言:javascript复制
./vendor/bin/sail down  --remove-orphans
./vendor/bin/sail up -d

这样,就可以通过 http://redis.test 访问这个项目了:

更多关于 Sail 的使用教程,请参考 Laravel 官方文档,如果想更进一步,还可以学习 Docker 底层知识以便更好地掌握这个本地开发环境。

0 人点赞