我正在PHP源代码上执行安全性测试。脚本的功能高度依赖于底层基础结构,因为它对Linux、OSx和Windows以及PHP5.x、PHP7.x、MySQL 4.x和5.x进行了优化。此外,还有可能使用像SQLite这样的不同的数据库后端。
为了测试特定的功能,我编写了一些很好的测试。我想重用这个测试,并在不同的环境中自动运行我的测试。我想用码头来做这个。但我对码头很陌生。虽然我在Bash脚本方面很在行。我对现有的容器和可能性做了一些研究。但似乎没有一种容易的方法来获得所需的容器。
现在,让我们忘掉OSx和Windows,只关注Linux。让事情变得更简单。在我理想的场景中,我在自己的端口上启动了几个码头集装箱,在不同的基础设施上运行相同的软件,比如:
最好有一个轻量级的Linux发行版,比如Arch或Alpine。
我刚刚用Ubuntu作为发行版完成了一些成功的测试,但在我自己编写所有这些Docker映像之前,我想知道是否没有更容易的解决方案来启动和运行这些映像。
是否有更简单的方法在多平台上使用Docker映像测试PHP源代码?
发布于 2018-02-22 10:49:11
我认为您不能跳过构建每个环境的过程。尽管如此,你可以使用一些预建的图像从码头枢纽加快速度。
我会创建以下结构:
|-- 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通过这种方式,您将根据环境变量运行不同的版本,因此您可以轻松地在脚本中这样做:
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
...https://stackoverflow.com/questions/48923607
复制相似问题