完全使用 Docker 开发、部署 PHP 项目。本指南只是简单列出,具体内容请查看 文档
本页面以 PHPStorm 为例进行介绍。
如果你使用的是 VSCode 请参考 这里
$ composer create-project --prefer-dist khs1994/example demo
$ cd demo
关注项目作者微信订阅号,接收项目最新动态
- Laravel 项目,请查看 https://github.com/khs1994-docker/laravel-demo
-
编辑
.pcit.php
文件中的常量 -
执行
php .pcit.php
完成替换
建立一个自己的 PHP 项目模板(即 composer
包类型为 project
),里面包含了常用的文件的模板。
示例:https://github.com/khs1994-docker/php-demo
Filename | Description |
---|---|
.github/workflows |
GitHub Actions CI 工具 |
.gitattributes |
git 打包时排除文件(例如 测试代码) |
.drone.yml |
Drone CI 工具 |
.editorconfig |
定义文件格式规则(例如 缩进方式) |
.pcit.yml |
PCIT CI 工具 |
.php_cs |
PHP 代码格式化工具 |
.doctum.php |
PHP 文档生成工具 |
.styleci.yml |
Style CI PHP 代码格式化 CI 工具 |
-
假设系统中不包含任何 PHP 等程序
-
启动 Docker CE
-
LNMP khs1994-docker/lnmp
-
将 Docker 化的常用命令所在文件夹加入
PATH
,具体请查看 这里。 -
git 分支
dev
-
使用 Docker 作为 LNMP 环境,实际上大大简化了部署,但配置开发环境需要较多步骤,同时由于 Windows(性能特别差)、macOS(还可以) 运行 Docker 效率较 Linux 差,实际在开发环境是否使用 Docker,请各位自行权衡。
使用自己的模板项目初始化 PHP
项目。
$ cd lnmp/app
$ lnmp-composer create-project --prefer-dist khs1994/example:dev-master demo
$ cd demo
$ git init
$ git remote add origin [email protected]:username/PROJECT_NAME.git
$ git checkout -b dev
$ echo -e "<?php\nphpinfo();" >> public/index.php
一个 PHP 项目, 一个 网址,一个 NGINX 子配置文件
参考示例配置文件在 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
并列。
.
├── app # 项目文件夹
└── lnmp # khs1994-docker/lnmp
由于 PHP 环境位于 Docker 中,必须进行额外的配置
生成 docker-compose.yml
# 在 khs1994-docker/lnmp 项目根目录执行
$ lnmp-docker config > docker-compose.yml
PHPStorm 设置
-> PHP
-> CLI Interpreter
-> 点击后边三个点
-> 点击左上角 + 号
-> From Docker ...
-> 选择 Docker Compose
-> Configuration file(s)
-> 选择 docker-compose.yml(khs1994-docker/lnmp项目根目录)
-> Services
-> 选择 workspace
-> 点击 OK 确认
点击 ok 之后跳转的页面上 Additionl
-> Debugger extension
-> 填写 xdebug
具体请查看 khs1994-docker/lnmp#260 (comment)
再点击 ok 之后跳转到了 PHPStorm 设置
-> PHP
-> CLI Interpreter
这个页面
这里的配置 PHPStorm 可能会自动生成,保证正确即可。
这里以 Windows 为例,其他系统同理(添加本机路径与容器路径对应关系即可)。
由于 Windows 与 Linux 路径表示方法不同,我们必须另外添加路径对应关系。配置本地项目与容器目录之间的路径对应关系。
假设本地项目目录位于 C:/Users/username/app/demo
对应的容器目录位于 /app/demo
假设本地项目目录位于 WSL2 \\wsl$\Ubuntu\app\demo
对应的容器目录位于 /app/demo
PHPStorm 设置
-> PHP
-> Path mappings
添加一个条目 C:/Users/username/app/demo
=> /app/demo
请查看 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
# 或安装依赖
$ lnmp-composer install [--ignore-platform-reqs]
PHPStorm 设置
-> PHP
->Test Frameworks
-> 左上角添加
-> PHPUnit by Remote Interpreter
-> 选择第五步添加的 workspace
-> 点击 OK
-> PHPUnit Library
-> 选择 Use Composer autoloader
-> Path to script
-> 点击右边刷新按钮即可自动识别,或者手动 填写 /app/PROJECT_NAME/vendor/autoload.php
-> 点击 OK 确认
在测试函数名单击右键 run FunName
开始测试。
# 项目目录必须包含 PHPUnit 配置文件 phpunit.xml
$ lnmp-phpunit [参数]
此示例将 PHP 代码打入了镜像中,如果你选择将代码放入宿主机,那么无需进行此步骤。两种方法自行取舍。
关于代码放到哪里?代码放入宿主机,上线时需要在服务器 pull 代码(或者参考 git-sync 周期性监听 git 变化并克隆到本地)。代码放入镜像中,上线时直接拉取镜像之后启动容器,无需 pull 代码。
若将 PHP 项目打入镜像,镜像中严禁包含配置文件
Docker 镜像必须由 CI 服务器构建,而不是本地人工构建!
自行修改 .env
docker-compose.yml
文件,保留所需的 PHP 版本,其他的注释
$ docker compose build php nginx
$ git add .
$ git commit -m "First"
$ git push origin dev:dev
CI/CD 可以到 khs1994-docker/ci 查看。
- Drone (私有化 CI/CD)
可以在生产环境之前加一个 预上线 环境,这里省略。
让 每个节点 都拥有一份代码,这样就不用关心 pod
调度到哪个节点。
- https://cn.bing.com/search?q=error+while+parsing+docker-compose+config+failed&qs=n&form=QBRE&sp=-1&pq=error+while+parsing+docker-compose+config+failed&sc=0-48&sk=&cvid=EEF0C7500ECD4BBAAD120B49A52EE153
- https://stackoverflow.com/questions/61520106/pycharm-error-while-parsing-docker-compose-yml-process-docker-compose-confi