第一种,nginx和php放在两个镜像中
dnmp: https://github.com/yeszao/dnmp,这个文档和配置相对比较齐全,或者直接在官方拉php和nginx的镜像,不过需要自己做挂载和连接
拉取
git clone https://github.com/yeszao/dnmp.git
执行
cd dnmp/
cp env.sample .env
cp docker-compose.sample.yml docker-compose.yml
docker-compose up
# 如果提示没有docker-compose
apt install docker-comopose
启动容器
docker start cfe
docker exec -it cfe /bin/bash
目录挂载
docker run -it -v /data/dnmp/www:/www dnmp_php /bin/sh
停止容器
docker stop cfe
第二种,nginx和php放在一个镜像中
webdevops/php-nginx: https://hub.docker.com/r/webdevops/php-nginx,相对官方一点的混合镜像
拉取镜像
docker pull webdevops/php-nginx
创建容器
docker run -itd --name php-nginx-xs -p 80:80 -v /data/www/:/data/www webdevops/php-nginx
进入对应容器
docker exce -it eb3 /bin/sh
可能问题
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown
将 /bin/bash换成 /bin/sh成功
详解:Docker数据卷目录挂载_忆昔恋蒲荷的博客-CSDN博客_docker 挂载目录
查看
nginx -t
php -v
挂载
docker run -d -v /data/www:/data/www -p 8080:80 --privileged=true webdevops/php-nginx
-
-d 后台静默运行启动过程
-
-v /data/www:/data/www 映射宿主机数据卷到 docker 容器的目录(数据卷名称:/容器目录 )
-
-p 8080:80 映射宿主机的端口到 docker 容器的端口(宿主机端口:容器端口)
-
--privileged=true 授予权限
-
webdevops/php-nginx docker run 所要启动的 nginx 镜像以创建并启动容器
参考:使用docker 容器及镜像 php-nginx 部署 LNMP 环境 | 码农家园
其他
-i: 以交互模式运行容器,通常与 -t 同时使用
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;