docker 可以把运行环境整体打包,但是在开发时,IDE 往往还要指定宿主机上的PHP 可执行文件,这样,安装php扩展时,要装两遍,比较麻烦.如果在宿主机上运行容器中的命令? 可以借助 docker exec -it <container_name> <command> <args> 命令, 写个 名为php 的shell 脚本,里面写入这行代码即可.
我用的环境是 wsl 中安装 docker, 很久以前,这个方法似乎很不通, 在 phpsrtom 中指定 php可执行文件时, 会报检测不通过,后来,这个方法又成功了.
从 ubuntu22.04 构建自己的基础镜像,这里主要是安装一些基础依赖,并切换了下镜像源。也可以跳过,直接用 ubuntu22.04 官方源。我之前用官方源时,发现 apt update 时,连接失败。然后我在香港云服务器上通过下面的 Dockfile 创建了个基础镜像。
#================================================================================================= # docker build --force-rm -t zbseoag/ubuntu:22.04 . #================================================================================================= FROM ubuntu:22.04 WORKDIR /home RUN set -eux ;\ apt-get update ;\ apt-get install -y --no-install-recommends --no-install-suggests ca-certificates ;\ cp /etc/apt/sources.list /etc/apt/sources.list.bak ;\ sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list ;\ sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
运行容器:
docker run -id --name work --add-host work:127.0.0.1 --network host -v /c:/c -v /d:/d --cap-add SYS_PTRACE --restart unless-stopped zbseoag/ubuntu:22.04
docker exec -it work bash
进入容器后,就像一般使用 ubuntu 一样,安装 php nginx mysql
apt install sudo apt install php-dev nginx mysql_server redis-server composer
在宿主机上创建 php 和 composer 脚本
su root echo 'docker exec -w $(pwd) -t work php "$@"' > /usr/local/bin/php echo 'docker exec -w $(pwd) -t work composer "$@"' > /usr/local/bin/composer chmod a+x /usr/local/bin/php /usr/local/bin/composer
然后,就可以在宿主机上尝试使用 php -v 查看版本
docker commit work zbseoag/work:latest docker login docker push zbseoag/work:latest
标签:php,--,宿主机,apt,work,docker,PHP From: https://www.cnblogs.com/zbseoag/p/17434956.html