docker 搭建nginx和php过程中的曲折
一、首先先搭建docker
1、把yum更新到最新:yum update
2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的:yum install -y yum-utils device-mapper-persistent-data lvm2
3、设置yum源,我这里用的是阿里的仓库:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
4、安装docker :yum install docker-ce
5、启动docker :systemctl start docke
6、把docker设置为开机自启动:systemctl enable docker (到了这里docker已经安装完成)
二、docker 安装php容器
1、国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。我这里用的是阿里云的镜像加速:阿里云镜像获取地址:https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors,登陆后,左侧菜单选中镜像加速器就可以看到你的专属地址了
进去后可以根据不同系统选择不同方案,具体里面有教程。
2、安装php(我这里安装的php7.3 ):docker pull php:7.3.0-fpm
三、docker安装nginx
1、docker pull nginx
四、nginx+php部署
1、新增目录:mkdir ~/nginx/www ~/nginx/conf ~/nginx/log
2、启动php:docker run --name php7 -v ~/nginx/www:/www --privileged=true -d php:7.3.0-fpm
备注:--name php7 将启动的容器命名为php7 -v ~/nginx/www:/www 把本机~/nginx/www的目录映射为php容器内/www目录 访问文件时就可以会去~/nginx/www目录中找
3、在~/nginx/conf文件夹下新增文件default.conf编辑新增内容
server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.php index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /www/$fastcgi_script_name; include fastcgi_params; } }
4、启动nginx:docker run --name php-nginx -p 81:80 -v ~/nginx/conf:/etc/nginx/conf.d -v ~/nginx/www:/usr/share/nginx/html --privileged=true --link php7:php -d nginx
备注:--name php-nginx 将启动的容器命名为php-nginx ~/nginx/conf:/etc/nginx/conf.d 把本机~/nginx/conf的目录映射为nginx容器内/etc/nginx/conf.d目录 启动nignx事就会把 ~/nginx/conf下面的配置文件替换成/etc/nginx/conf.d目录下的配置文件启动
--link php7:php 这里是把nginx和php容器连接起来使得两个容器可以相互通信
巨坑:你会发现不管是启动nginx还是php我都带了--privileged=true这个,让它有权限访问,开始这是nginx添加了然后访问php的时候一直报错文件不存在,反复查找是不是配置文件的问题,后来试着去www目录下然后就报没有权限才发现是权限问题
开始以为是其它的问题然后弄了贼久,巨坑.......