完全使用 Docker 开发、部署 PHP 项目。本指南只是简单列出,具体内容请查看 文档
$ composer create-project --prefer-dist khs1994/example:dev-master example
$ cd example
docker run
docker-compose up
kubectl create -f filename.yaml
helm install ./lnmp --tls
注意本项目专用于 khs1994.com PHP 开源项目,他人使用请按以下步骤进行初始化,严禁直接使用。
编辑 .khsci.php
文件中的常量
执行 php .khsci.php
完成替换
建立一个自己的 PHP 项目模板(即 composer
包类型为 project
),里面包含了常用的文件的模板。
示例:https://github.com/khs1994-docker/php-demo
Filename | Description |
---|---|
.gitattributes |
git 打包时排除文件(例如 测试代码) |
.drone.yml |
Drone CI 工具 |
.editorconfig |
定义文件格式规则(例如 缩进方式) |
.khsci.yml |
KhsCI CI 工具 |
.php_cs |
PHP 代码格式化工具 |
.sami.php |
PHP 文档生成工具 |
.styleci.yml |
Style CI PHP 代码格式化 CI 工具 |
.travis.yml |
Travis CI 工具 |
假设系统中不包含任何 PHP 等程序(实际上为了防止 Docker 崩溃等意外情况,建议系统中仍然安装这些软件作为 PLAN B)
启动 Docker CE
LNMP khs1994-docker/lnmp
将 Docker 化的常用命令所在文件夹加入 PATH
,具体请查看 这里。
IDE PHPStorm
git 分支 dev
使用 Docker 作为 LNMP 环境,实际上大大简化了部署,但配置开发环境需要较多步骤,同时由于 Windows、macOS 运行 Docker 效率较 Linux 差,实际在开发环境是否使用 Docker,请各位自行权衡。
使用自己的模板项目初始化 PHP
项目并初始化 git 仓库。
$ cd lnmp/app
$ lnmp-composer create-project --prefer-dist khs1994/example:dev-master example
$ cd example
$ git init
$ git remote add origin git@url.com:username/EXAMPLE.git
$ git checkout -b dev
$ echo -e "<?php\nphpinfo();" >> index.php
一个 PHP 项目, 一个 网址,一个子配置文件
参考示例配置文件在 config/nginx
新建 *.conf
NGINX 配置文件
$ ./lnmp-docker up
# $ ./lnmp-docker restart
浏览器打开页面出现 php 信息
注意打开的是 PHP 项目(避免文件层次过深,IDE 直接打开 PHP 项目),不是 khs1994-docker/lnmp
!
要配置 khs1994-docker/lnmp
建议使用另外的文本编辑器。
你可以通过设置
APP_ROOT
变量来实现app
与khs1994-docker/lnmp
并列。
由于 PHP 环境位于 Docker 中,必须进行额外的配置
PHPStorm 设置
-> Languages & ...
-> PHP
-> CLI Interpreter
-> 点击后边三个点
-> 左上角添加
-> From Docker ...
-> 选择 Docker
-> Image name
-> 选择 khs1994/php:7.2.x-fpm-alpine
-> 点击 OK 确认
点击 ok 之后跳转的页面上 Additionl
-> Debugger extension
-> 填写 xdebug
具体请查看 https://github.com/khs1994-docker/lnmp/issues/260#issuecomment-373964173
再点击 ok 之后跳转到了 PHPStorm 设置
-> Languages & ...
-> PHP
-> CLI Interpreter
这个页面
这里以 Windows 为例,其他系统同理(添加本机路径与容器路径对应关系即可)。
由于 Windows 与 Linux 路径表示方法不同,我们必须另外添加对应关系。配置容器目录与本地项目之间的对应关系。
假设本地项目目录位于 C:/Users/username/app/example
对应的容器目录位于 /app/example
点击 Path mappings
添加一个条目 C:/Users/username/app/example
=> /app/example
点击 Docker container
后边三个点配置容器的参数(就像 docker run ... 命令行配置的参数一样)
Network mode lnmp_backend
(非常重要)
Volume bindings -> Container path /app/PHP_PROJECT
, Host path 保持不变,需要挂载其他文件再新增一个条目即可
其他参数根据实际需要自行配置
请查看 https://github.com/khs1994-docker/lnmp/blob/master/docs/xdebug.md
容器化 PHPer 常用命令请查看 https://github.com/khs1994-docker/lnmp/blob/master/docs/command.md
$ lnmp-composer require phpunit/phpunit
PHPStorm 设置
-> Languages & ...
-> PHP
->Test Frameworks
-> 左上角添加
-> PHPUnit by Remote Interpreter
-> 选择第五步添加的 Docker 镜像
-> 点击 OK
-> PHPUnit Library
-> 选择 Use Composer autoloader
-> Path to script
-> 点击右边刷新按钮即可自动识别,或者手动 填写 /app/PHP_PROJECT/vendor/autoload.php
-> 点击 OK 确认
在测试函数名单击右键 run FunName
开始测试。
$ cd lnmp/app/PHP_PROJECT
# 根目录必须包含 PHPUnit 配置文件 phpunit.xml
$ lnmp-phpunit [参数]
将 PHP 项目打入镜像,镜像中严禁包含配置文件
自行修改 .env
docker-compose.yml
文件,保留所需的 PHP 版本,其他的注释
$ docker-compose build
$ git add .
$ git commit -m "First"
$ git push origin dev:dev
khs1994.com
CI/CD 由 khs1994-docker/ci 提供。
Drone + Gogs
暂不支持挂载本地 Volume
本例 CI/CD 由 Travis
提供。
Travis CI (公共的、仅支持 GitHub CI/CD)
Drone (私有化 CI/CD)
KhsCI (开发中,专为 PHPer 设计的基于容器的 CI/CD 系统)
具体请搜索 Travis
学习如何使用。
可以在生产环境之前加一个 预上线 环境,这里省略。
只有添加了 tag
的代码才能部署到生产环境
Docker 镜像名必须包含 git tag
CI/CD 服务器构建并推送镜像到 Docker 仓库。
生产环境部署 khs1994-docker/lnmp-k8s
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。