我正在对PHP源代码执行安全测试。脚本的功能高度依赖于底层基础架构,因为它具有针对Linux,OSx和Windows以及PHP 5.x,PHP 7.x,MySQL 4.x和5.x的优化。还有可能使用不同的数据库后端,如SQLite。
为了测试特定的功能,我写了一些很好的测试。我想重用该测试并在不同的环境中自动运行我的测试。我想使用Docker。但我对Docker来说还是一个新手。虽然我在Bash脚本中非常方便。我对现有容器和可能性进行了一些研究。但似乎没有简单的方法来获得所需的容器。
现在让我们忘记OSx和Windows,而只关注Linux。让事情变得更轻松在我理想的情况下,我在其自己的端口上启动了几个docker容器,在不同的基础架构上运行相同的软件,例如:
最好使用轻量级的Linux发行版,如Arch或Alpine。
我刚刚用Ubuntu作为发行版完成了一些成功的测试,但在我自己编写所有这些Docker图像的脚本之前,我想知道是否有更简单的解决方案来启动并运行。
使用Docker镜像在多平台上测试PHP源代码是否更简单?
答案 0 :(得分:1)
我认为你不能跳过构建每个环境的过程。尽管如此,您还可以使用Docker hub中的一些预先构建的图像来加速。
我创建了以下结构:
|-- test.sh
|-- docker-compose.yml
|-- php5.X
| `-- Dockerfile
|-- php7.X
`-- Dockerfile
在每个Dockerfile中,如果您需要自定义它们,可以使用基本映像并安装所需的一切。
这是棘手的事情:
<强>搬运工-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
这样您可以根据环境变量运行不同的版本,因此您可以在脚本中轻松完成此操作:
<强> test.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
...