基本原理

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

Code

直接用运行:

  1. 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

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

  1. 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或者其他类似的文件中定义如下函数:

  1. docker_php () {
  2. tty=
  3. tty -s && tty=--tty
  4. docker run \
  5. $tty \
  6. --interactive \
  7. --rm \
  8. --volume $PWD:/usr/src/myapp \
  9. --workdir /usr/src/myapp \
  10. php:cli php "$@"
  11. }

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