phpexperts / docker
将任何 PHP 应用程序/库切换到使用 Docker 的最快、最简单的方法。
Suggests
- phpexperts/docker-phan: Dockerized phan/phan
- phpexperts/docker-phpstan: Dockerized phpstan/phpstan
- phpexperts/docker-rector: Dockerized rector/rector
- v11.0.x-dev
- v11.0.0
- v10.0.x-dev
- v10.0.3
- v10.0.2
- v10.0.1
- v10.0.0
- v9.2.x-dev
- v9.2.2
- v9.2.1
- v9.2.0
- v9.1.x-dev
- v9.1.2
- v9.1.1
- v9.1.0
- v9.0.x-dev
- v9.0.1
- v9.0.0
- v8.3.x-dev
- v8.2.x-dev
- v8.2.0
- v8.1.x-dev
- v8.1.0
- v8.0.x-dev
- v8.0.1
- v8.0.0
- v7.2.x-dev
- v7.2.1
- v7.2.0
- v7.1.x-dev
- v7.1.2
- v7.1.1
- v7.1.0
- v7.0.x-dev
- v7.0.0
- v6.6.x-dev
- v6.6.0
- v6.5.x-dev
- v6.5.0
- v6.4.1
- v6.4.0
- v6.2.1
- v6.2
- v6.1
- v6.0
- v5.0.2
- v5.0.1
- v5.0
- dev-oracle-oci8
- dev-ioncube_support
This package is auto-updated.
Last update: 2024-09-12 10:32:04 UTC
README
一个用于快速部署 Docker 的 PHP 应用程序的实用工具。
观看零依赖安装视频: https://youtu.be/d8o9p2DimME
在 2 分钟内在遗留 PHP 5.6 应用程序上安装: https://youtu.be/xZxaJcsbrWU
该项目已针对超过 350,000 个开源 Packagist 软件包进行测试(通过 Bettergist Archiver 项目),并且与其中 99.999% 兼容。
包含
- PHP 5.6, 7.0-7.4 + 8.0, 8.1, 8.2, 和 8.3,以及 8.4-beta4。
- Nginx
- Redis v7.2
- PostgreSQL v16
- MariaDB v10.11
- Oracle ext-oci
《phpexperts/php:VESION-full》镜像包含所有捆绑的 PHP 扩展和 Redis。
- imap
- ldap
- pspell
- redis
- snmp
- xmlrpc
《phpexperts/php:VERSION-oracle》镜像包含完整镜像中的所有内容,以及 Oracle(ext-oci8)的驱动程序。
如果您需要 full
构建中不可用的扩展,请在 GitHub 上创建一个问题。
安装
- 观看 安装 HOWTO 视频。
通过 Bash(零 PHP 依赖项)
bash <(curl -s 'https://raw.githubusercontent.com/PHPExpertsInc/dockerize/v10.0/dockerize.sh')
然后编辑 .env 中的凭据。
docker compose up -d
通过 Composer
# Ensure that vendor/bin is in your PATH and before /usr/bin.
composer require --dev phpexperts/dockerize
vendor/bin/php dockerize
# Edit credentials in .env.
docker-compose up -d
别忘了编辑你的 docker-compose.yml!
配置你的 PATH
为了将你的现有 PHP 项目 docker 化,请执行以下操作
确保你的 profile PATH 包含 ./vendor/bin
,并且它优先于可能包含 php 可执行文件的任何其他目录
PATH=./vendor/bin:$PATH
感谢 JetBrains
JetBrains 慷慨地授予本项目免费开源许可证,以使用 PhpStorm 和所有其他 JetBrains 产品,作为其 开源许可证 创新项目的一部分。
与其他 dockerized PHP 项目的优势
- 超级快,完全自动安装。(非常适合在 CI 上测试多个版本)
- 与 www.phpdocker.io 相比,Dockerize PHP 的一个重大区别是,Dockerize PHP 提供了所有客户端工具,而 phpdocker.io 提供了其中没有任何一个。
开箱即用,你有每个项目的二进制文件
- php
- composer
- php-ci.sh
- mysql
- mysqldump
- psql
- pg_dump
- createdb
- dropdb
- redis
- redis-cli
通过 Docker 的 PHP CI
使用 php-ci.sh 脚本,你可以轻松地测试你的应用程序或库与每个主要版本的 PHP(目前为 7.4-8.3)兼容性
在项目根目录中,你的 phpunit.xml 所在的位置,或者你通常运行 phpunit 的位置
vendor/bin/php-ci.sh
然后它会自动更新 composer 并运行适用于你项目支持的所有主要 PHP 版本的适当的 PHPUnit 版本。
最新更改
v11.0.0
- [2024-09-07 18:55:07 CDT] [重大] 升级到 Ubuntu 24.04 Noble Numbat。
- [2024-09-07 18:55:45 CDT] 通过重新添加 php-fpm 修复了 web-debug 中的重大回滚。
- [2024-09-07 17:20:24 CDT] 为创建无依赖的 PHP 镜像添加了初始步骤。origin/v11.0
- [2024-09-07 19:00:42 CDT] 使用 docker volume 存储 apt 元数据。
v10.0.3
- [2024-06-29 10:13:12 CDT] [php-ci] 从 composer.json 动态获取和计算支持的 PHP 版本。
- [2024-06-29 10:20:39 CDT] [php-ci] 如果没有特定版本的 xml,则使用 phpunit 的默认配置。
- 【2024-06-29 10:20:48 CDT】 [php-ci] 增加了支持 PHPUnit v11。
- 【2024-06-29 10:31:50 CDT】 为 phpexperts/dockerise 创建了 Packagist 别名以优化 SEO。
v10.0.2
- 【2024-06-26 00:57:05 CDT】 添加了我的 php-ci.sh 脚本。
v10.0.0
- 【2024-05-24 07:40:15 CDT】 添加了一个综合的零依赖 Bash-via-curl 安装器。
- 【2024-05-24 07:31:26 CDT】 为 nginx 添加了一个寻找第一个开放的 HTTP 端口的机制。master
- 【2024-05-24 07:30:16 CDT】 从 docker 中移除了 Redis v7.3;切换到 v7.2。
v9.2.1
- 【2024-05-23 08:17:00 CDT】 升级到 MariaDB 10.11,Redis 7.3 和 Postgres 16。
v9.2.0
- 【2024-05-21 21:31:26 CDT】 配置了 composer 以运行安装脚本。
v9.1.2
- 【2024-05-21 06:27:48 CDT】 修复了 docker logs 被截断的问题。origin/v9。
v9.1.1
- 【2024-01-16 03:15:49 CST】 [重大] 修复了一个阻止 dockerized php CLI 在定义了网络的项目中运行的严重错误。
- 【2024-01-14 14:22:31 CST】 修复了 Docker 安装器。
- 【2024-01-14 14:13:58 CST】 重命名了安装器。
- 【2024-01-14 14:12:02 CST】 将安装器从 wget 切换到 curl。
v9.1.0: 新的零依赖 Bash 安装器
- 【2024-01-14 07:06:07 CST】 添加了一个零 PHP 依赖的 Bash 安装器。
- 【2024-01-14 07:04:47 CST】 在基础 Linux 映像中添加了对 Linux ACL 的支持。
- 【2024-01-14 07:03:35 CST】 修复了 base-oracle 中的 docker 构建错误。
v9.0.1
- 【2024-01-14 06:40:56 CDT】 [重大] 修复了一个阻止 dockerized php CLI 在新项目中运行的严重错误。
v9.0.0: 版本 9.0.0:新的完整 PHP 映像、Oracle ext-oci8 和新的构建系统。
- 【2024-01-13 23:04:49 CST】 添加了针对 Ubuntu 22.04 构建的 Oracle ext-oci8 二进制文件。
- 【2024-01-13 22:51:39 CST】 添加了一个包含 Oracle DB 的 ext-oci8 扩展的 docker 构建。
- 【2024-01-13 22:50:16 CST】 在基础 PHP 映像中添加了 wget。
- 【2024-01-12 17:30:47 CST】 重构了 IonCube 构建,使扩展只下载一次。
- 【2024-01-12 14:49:27 CST】 添加了一个包含所有捆绑的 PHP 扩展(以及更多)的
full
docker 构建。
使用 docker-compose 管理
要控制容器,请使用 docker-compose
。
# Downloads the images, creates and launches the containers.
docker-compose up -d
# View the logs
docker-compose logs -ft
# Stop the containers
docker-compose stop
就这么多!您现在拥有最新的 LEPP(Linux、Nginx、PostgreSQL、PHP)栈或最新的 LEMP(Linux、Nginx、MariaDB、PHP)栈。
用户 ID 控制
可以控制初始进程(通常是 PHP)和/或 PHP-FPM 进程运行的 UID。 bin/php
文件已经为初始进程完成了这项工作。
如果您要将卷挂载到容器中,这很重要,因为初始进程或 PHP-FPM 的 UID 可能需要与卷匹配,以便能够读取和/或写入它。
PHP-FPM 进程 UID
要设置 PHP-FPM 进程的 UID,您应该在容器上设置 PHP_FPM_USER_ID
环境变量。例如
docker run -e PHP_FPM_USER_ID=1000 phpexperts/php:7 php-fpm5.6
php.ini 指令
您可以通过在容器中设置环境变量来修改某些 php.ini 指令。以下是环境变量及其对应的 php.ini 指令列表
例如,以下命令将以 30 兆字节的 post_max_size
启动 PHP 容器
docker run -e PHP_POST_MAX_SIZE=30M phpexperts/php:7
分发
Docker Hub
关于 PHP Experts, Inc.
PHP Experts, Inc.是我的咨询公司。这是一家由包括我在内的一小群技术精湛的全栈PHP开发者组成的公司,我们将他们安排在其他公司的1099职位上。我们提供长期和短期职位,对于像我这样的疯狂开发者来说,短期职位也是可以的。如果你每隔几个月或几周就想在不同的项目/公司工作,无论是在美国大陆、欧洲还是东南亚,那将非常棒。
自2015年以来,我在拉斯维加斯、休斯顿、英国、都柏林、哥斯达黎加、哥伦比亚、印度和菲律宾设立了分支机构。如果有人在上述任何地方有工作许可,我们几乎可以把你安排到你想要去的任何地方。我50%的时间都在选择性地旅行。遍布世界各地。