我想从命令行运行一个php脚本作为oneliner。因为在这台linux机器上没有安装PHP但Docker我想通过运行一个执行脚本的小型PHP Docker镜像来执行PHP解释器,并在完成后删除容器和图像。
我的网络连接速度不快,因此图片应该尽可能小。
脚本process.php
应读取当前工作目录中的文件data.json
,并在子目录中生成一些文本文件。因此,不需要特殊的PHP模块。
我的问题:
docker run ...
)上执行的一行bash
?我对Dockerhub的研究产生了大量的PHP图像,其中包含完整的PHP,并且没有针对主机卷修改进行优化。
答案 0 :(得分:1)
找到一个接近我需要的解决方案。
脚本process.php
:
<?php
echo "hello";
$data = json_decode(file_get_contents(__DIR__."/data.json"),true);
file_put_contents("message.txt","message is ".$data["message"]);
数据文件data.json
:
{
"message": "hello world"
}
单线:
$ docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp \
php:7.2.2-cli-alpine3.6 php process.php
结果是message.txt
:
message is hello world
不是最小的图像,但是大小为62 MB并在完成后自行移除。