docker安装的php 在cli中使用

bashrc 方式一(容器太多)

1: 修改 ~/.bashrc 中新增

php7 () {
    tty=
    tty -s && tty=--tty
    docker 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个容器

方式二 (容器少, 但是supervisor每次reload后台程序没被杀死)

优化后

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=--tty
    docker exec $tty php74 php "$@"
}

note: 通过php74函数去进入docker php74的容器, 在执行后续操作

3: supervisor 配置文件

command=/bin/bash -c "source /root/.bashrc && php74 index.php admin/mq/receive_stock"

方式三(最优); 还可以按个人随意定制

再次优化

先启动一个容器, 直接用php容器也行;
supervisorctl 会自动拉起, 所以重启mq, 杀掉进程就行, 
查问题需要进入容器, php index.php admin/Mq/aaa  这样监听这查看

// 运行一个php容器
docker run -it --network=dnmp_dnmp --volume /website:/www:rw --workdir /www --name php_pod --ip 192.168.0.11 dnmp_php

// 宿主机查看mq相关进程, 杀死进程等
ps aux | grep -i php | grep -i "admin/mq"
sudo pkill -f "admin/Mq"
sudo pkill -f "admin/Mq/aaa";

// 查看docker进程
docker top php_pod

// supervisor 监控
supervisorctl status
supervisorctl reload

// docker在宿主机执行php后台程序
docker exec php_pod /bin/sh -c "cd /www/website_test/ && php index.php admin/Mq/aaa"

supervisor 配置文件写法: 注意: 不加参数 -itd 这些; 因为docker本身就是在后台运行
[program:mq-test]
directory=/website/website_test/
command=docker exec php_pod /bin/sh -c "cd /www/website_test/ && php index.php admin/Mq/aaa"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值