phpexperts/dockerize

将任何PHP应用程序/库快速便捷地切换到使用Docker的最简单方法。

安装量: 15,476

依赖者: 15

建议者: 0

安全: 0

星标: 68

关注者: 5

分支: 5

开放问题: 3

语言:Dockerfile

v11.0.0 2024-09-08 14:20 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上创建一个问题。

安装

通过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项目dockerize,请执行以下操作

确保你的profile PATH包含./vendor/bin,并且它比任何可能包含php可执行文件的目录具有优先级

PATH=./vendor/bin:$PATH

感谢,JetBrains

JetBrains慷慨地授予本项目免费的开放源代码许可证,以用于PhpStorm和所有其他JetBrains产品,作为其开放源代码许可证倡议的一部分。

与其他dockerized PHP项目相比的优势

  1. 超级快速,完全自动安装。(非常适合在CI上测试多个版本)
  2. 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 shell脚本,你可以轻松测试你的应用程序或库与每个主要的PHP版本(目前为7.4-8.3)兼容性

在你的phpunit.xml所在的项目根目录,或者你通常运行phpunit的地方

vendor/bin/php-ci.sh

然后它将自动更新composer并运行适用于你项目支持的所有主要PHP版本的适当版本的PHPUnit,通过Docker的力量。

最新更改

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调试中的重大回滚。
  • [2024-09-07 17:20:24 CDT] 为创建distroless 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】 为SEO创建一个Packagist别名到phpexperts/dockerise。

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】 Redis从docker中移除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 ACLs的支持。
  • 【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】 添加了wget到基本PHP镜像。
  • 【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指令列表

例如,以下将启动一个将post_max_size设置为30兆字节的PHP容器

docker run -e PHP_POST_MAX_SIZE=30M phpexperts/php:7

分发

Docker Hub

关于PHP Experts, Inc.

《PHP Experts, Inc.》是我的咨询公司。[https://www.phpexperts.pro/](https://www.phpexperts.pro/),它是一家由包括我在内大约半打技术精湛的全栈PHP开发者组成的小公司。我将他们安置在其他公司的1099职位上。我们提供长期职位,对于像我这样的疯狂开发者来说,也提供短期职位。如果你想要每几个月或几周就参与不同的项目/公司,无论在美国大陆、欧洲还是东南亚的任何地方,那都是一件非常棒的事情。

自2015年以来,我在拉斯维加斯、休斯顿、英国、都柏林、哥斯达黎加、哥伦比亚、印度和菲律宾设立了分支机构。如果有人在其中的任何地方拥有工作许可,我们几乎可以把你安置在你想要去的地方。出于个人选择,我有一半的时间在旅行。走遍全世界。