For the complete documentation index, see llms.txt. This page is also available as Markdown.

7.18 实战多阶段构建 Laravel 镜像

本节适用于 PHP 开发者阅读。Laravel 基于 8.x 版本,各个版本的文件结构可能会有差异,请根据实际自行修改。

7.18.1 准备

新建一个 Laravel 项目或在已有的 Laravel 项目根目录下新建 Dockerfile .dockerignore laravel.conf 文件。

在 .dockerignore 文件中写入以下内容。

.idea/
.git/

vendor/

node_modules/

public/js/
public/css/
public/mix-manifest.json

yarn-error.log

bootstrap/cache/*
storage/

## 自行添加其他需要排除的文件,例如 .env.* 文件

...

在 laravel.conf 文件中写入 nginx 配置。

7.18.2 前端构建

第一阶段进行前端构建。

7.18.3 安装 Composer 依赖

第二阶段安装 Composer 依赖。

7.18.4 整合以上阶段所生成的文件

第三阶段对以上阶段生成的文件进行整合。

7.18.5 最后一个阶段构建 NGINX 镜像

7.18.6 构建 Laravel 及 Nginx 镜像

使用 docker build 命令构建镜像。

7.18.7 启动容器并测试

新建 Docker 网络

启动 laravel 容器,--name=laravel 参数设定的名字必须与 nginx 配置文件中的 fastcgi_pass laravel:9000; 一致

启动 nginx 容器

浏览器访问 127.0.0.1:8080 可以看到 Laravel 项目首页。

也许 Laravel 项目依赖其他外部服务,例如 redis、MySQL,请自行启动这些服务之后再进行测试,本小节不再赘述。

7.18.8 生产环境优化

本小节内容为了方便测试,将配置文件直接放到了镜像中,实际在使用时 建议 将配置文件作为 config 或 secret 挂载到容器中,请读者自行学习 Kubernetes 的相关内容。

由于篇幅所限本小节只是简单列出,更多内容可以参考 khs1994-docker/laravel-demo 项目。

7.18.9 附录

完整的 Dockerfile 文件如下。

最后更新于