gpt4 book ai didi

docker - 有没有更简单的方法来使用 Docker 图像在多平台上测试 PHP 源代码?

转载 作者:行者123 更新时间:2023-11-28 21:22:08 46 4
gpt4 key购买 nike

我正在对 PHP 源代码执行安全测试。该脚本的功能高度依赖于底层基础设施,因为它针对 Linux、OSx 和 Windows 以及 PHP 5.x、PHP 7.x、MySQL 4.x 和 5.x 进行了优化。也有可能使用不同的数据库后端,如 SQLite。

我写了一些很好的测试来测试特定的功能。我想重用该测试并在不同环境中自动运行我的测试。我想为此使用 Docker。但我对 Docker 很陌生。尽管我在 Bash 脚本方面非常得心应手。我对现有的容器和可能性做了一些研究。但似乎没有简单的方法来获得所需的容器。

让我们暂时忘掉 OSx 和 Windows,只关注 Linux。让事情变得更容易。在我的理想场景中,我在各自的端口上启动了几个 docker 容器,在不同的基础设施上运行相同的软件,例如:

  • Linux、Apache 2.x、PHP 5.x、MySQL 4.x
  • Linux、Apache 2.x、PHP 5.x、MySQL 5.x
  • Linux、Apache 2.x、PHP 7.x、MySQL 4.x (如果可能的话)
  • Linux、Apache 2.x、PHP 7.x、MySQL 5.x
  • Linux、Apache 2.x、PHP 5.x、SQLite
  • Linux、Apache 2.x、PHP 7.x、SQLite

最好使用轻量级 Linux 发行版,例如 Arch 或 Alpine。

我刚刚用 Ubuntu 作为发行版完成了一些成功的测试,但在我自己编写所有这些 Docker 镜像的脚本之前,我想知道是否有更简单的解决方案来启动和运行它。

有没有更简单的方法来使用 Docker 镜像在多平台上测试 PHP 源代码?

最佳答案

我认为您不能跳过构建每个环境的过程。尽管您可以使用 docker hub 中的一些预构建图像来加快速度。

我将创建以下结构:

|-- test.sh
|-- docker-compose.yml
|-- php5.X
| `-- Dockerfile
|-- php7.X
`-- Dockerfile

在每个 Dockerfile 中,如果您需要对其进行如此多的自定义,您可以使用基础镜像并安装所需的一切。

这是棘手的事情:

docker-compose.yml

version: '3'
services:
db:
image: mysql:${MYSQL_VERSION}
environment:
- MYSQL_ROOT_PASSWORD=secret
web:
build:
context: .
dockerfile: php${PHP_VERSION}/Dockerfile
depends_on:
- db

这样,您将根据环境变量运行不同的版本,因此您可以轻松地在脚本中执行此操作:

测试.sh

export MYSQL_VERSION=5.6
export PHP_VERSION=7.1

docker-compose up --abort-on-container-exit

export MYSQL_VERSION=5.5
export PHP_VERSION=5.6

docker-compose up --abort-on-container-exit

...

关于docker - 有没有更简单的方法来使用 Docker 图像在多平台上测试 PHP 源代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48923607/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com