美文网首页@DockerWeb前端之路工具癖
基于Docker的PHP命令行界面(CLI)

基于Docker的PHP命令行界面(CLI)

作者: WilliamWei | 来源:发表于2017-02-09 23:55 被阅读1038次

    前言

    Jenkins持续集成环境中构建工程时,经常需要用到诸如PHP、Nodejs等环境,如果每增加一个依赖环境,就重构一次Jenkins,那么显然工作量会非常大,且违背了使用Docker的初衷。所以特地研究并记录了一下如何使用包含了所需环境的Docker镜像来提供命令行的访问方式,这里以PHP为例。

    基本原理

    将工作目录以volume的方式挂载到php容器内,再在容器内运行指定的脚本,脚本执行完成后,容器的生命周期也同时结束,并回收相关资源。

    Code

    直接用运行:

    docker run -it --rm --name php -v $PWD:/usr/src/myapp -w /usr/src/myapp php:cli php
    

    将需要运行的参数追加到该命令后面即可。需要注意的是,这里默认会把当前工作目录作为工作环境,如需要运行/var/script.php文件时,则应该先cd /var后在该目录内运行上述命令(追加script.php于命令后面)
    显然这样的一个方式不够优雅,每次都需要输入一大长串,这里有两个解决方案:

    1. Alias

    为该命令起一个别名,如:

    alias docker_php='docker run -it --rm --name php -v $PWD:/usr/src/myapp -w /usr/src/myapp php:cli php' 
    

    2. Shell 函数

    在你的~/.bashrc,~/.zshrc或者其他类似的文件中定义如下函数:

    docker_php () {
        tty=
        tty -s && tty=--tty
        docker run \
            $tty \
            --interactive \
            --rm \
            --volume $PWD:/usr/src/myapp \
            --workdir /usr/src/myapp \
            php:cli php "$@"
    }
    

    通过这两种方式都可以随时在主机上面使用docker_php命令来执行一些php相关操作。但是这种方式只是提供了一个运行php文件的环境还是存在不少弊端的。

    参考

    相关文章

      网友评论

        本文标题:基于Docker的PHP命令行界面(CLI)

        本文链接:https://www.haomeiwen.com/subject/woviittx.html