1: 修改 ~/.bashrc 中新增
php7 () {tty=tty -s && tty=--ttydocker run \$tty \--interactive \--rm \--volume /website:/website:rw \--workdir /website/project \--network=dnmp_dnmp \dnmp_php php "$@"
}
–network=dnmp_dnmp 重要, 不然连不上数据库, 可通过docker inspect php | grep NetworkMode
查看
dnmp_php php “$@” dnmp_php 是在 php7 函数中定义的一个变量,用于存储包含 PHP 的 Docker 容器的名称。当您调用 php7 函数时,它会在名为 dnmp_php 的 Docker 容器中执行您传递给函数的 PHP 命令,这些命令作为参数传递给函数并以 $@ 的形式传递给 docker run 命令中的 php 命令。
2: 宿主机 supervisor 中使用
command=/bin/bash -c "source /root/.bashrc && cd /website/project && php7 index.php admin/mq/receive_stock"
这样发现, 如果supervisor 有7个应用, 就会启动7个容器
优化后
1: 先运行一个容器
docker run --interactive --tty --network=dnmp_dnmp --volume /website:/www:rw --workdir /www --name php74 --ip 192.168.0.33 dnmp_php
2: ~/.bashrc 脚本
php74 () {tty=tty -s && tty=--ttydocker exec $tty php74 php "$@"
}
note: 通过php74函数去进入docker php74的容器, 在执行后续操作
3: supervisor 配置文件
command=/bin/bash -c "source /root/.bashrc && php74 index.php admin/mq/receive_stock"