小白安装docker+nginx+php

网上搜了很多 ,但是很多都是抄来抄去, 少了很多重要环节,导致走了很多弯路。

我的环境是 CentOS, 服务器上已经部署了nginx和php ,所以在docker配置的时候经常和容器中的nginx和php搞混了,这次记录下免得又忘了

参照的 https://www.runoob.com/docker/centos-docker-install.html 

安装docker

1,设置仓库 。安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

sudo yum install -y yum-utils   device-mapper-persistent-data   lvm2

2,使用以下命令来设置稳定的仓库。

yum-config-manager  --add-repo  http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

3,安装最新版本的 Docker Engine-Community 和 containerd

yum install docker-ce docker-ce-cli containerd.io

三步操作完 docker就安装成功了  

4,启动docker 
sudo systemctl start docker

配置nginx和php

这部分参考了 https://www.jb51.net/article/113296.htm 

1,下载相关镜像

docker pull nginx

docker pull php:7.1.0-fpm

2,建立相关目录

mkdir -p /docker/www
mkdir -p /docker/nginx/conf.d

重点说明下  

/docker/www 是映射到容器docker内部的应用目录,名称随意,可以是/test/docker 等等。。 ,跟你本机已有环境中nginx指向的目录没有半毛关系,到时候docker部署完毕,你直接在本机/docker/www目录修改文件,docker容器就会生效

/docker/nginx/conf.d 是映射到容器docker内部的nginx配置目录,修改该文件夹下的配置,那么docker中的nginx也会发生改变,跟你本机的nginx配置目录也没有半毛关系

3,在 /docker/nginx/conf.d 中新建一个文件 default.conf,将以下内容拷贝进去

server {
  listen  80 default_server;
  server_name _;
  root   /usr/share/nginx/html;
 
  location / {
   index index.html index.htm index.php;
   autoindex off;
  }
  location ~ \.php(.*)$ {
   root   /var/www/html/;
   fastcgi_pass 127.0.0.1:9000;
   fastcgi_index index.php;
   fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
   fastcgi_param PATH_INFO $fastcgi_path_info;
   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
   include  fastcgi_params;
  }
}

4,启动php镜像

docker run -p 9000:9000 --name myphp \
-v /docker/www/:/var/www/html/ \
--privileged=true \
-d php:7.1.0-fpm
 
#查看php镜像的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' myphp
 
172.17.0.2
 
#修改/docker/nginx/conf.d/default.conf配置文件,使fastcgi_pass的值为 172.17.0.2:9000
#我刚开始也懵逼该配置中 “/usr/share/nginx/html”,“/var/www/html/”指向哪里,其实他就是容器内部的目录 ,无需理会;
vim /docker/nginx/conf.d/default.conf
 
fastcgi_pass 172.17.0.2:9000;

5,启动nginx镜像

docker run -p 8083:80 --name mynginx \
-v /docker/www:/usr/share/nginx/html \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx

"/usr/share/nginx/html"  就是/docker/nginx/conf.d/default.conf里的目录

“/etc/nginx/conf.d” 是docker 容器中nginx的配置的目录 ,反正跟你本地环境没关系

我将本机服务器8083端口映射到docker容器中的80端口,阿里的服务器记得开启安全策略组,将8083端口加入白名单

6,验证 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值