Lnmp组合,即liunx+nignx+mysql+php。步骤:先把需要的镜像下载过来,通过nginx反向代理给php-fpm.
站点根目录:/docker/nginx/www
nginx配置文件目录:/docker/nginx/conf/conf.d
数据库data目录:/docker/mysql/data

docker安装

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

# 也可以使用国内daocloud一键安装命令
curl -sSL https://get.daocloud.io/docker | sh

安装使用docker version查看一下当前版本,是否安装完毕

docker拉取镜像

安装完之后,我们来看一下有没有镜像

docker images


发现我们的docker还没有运行,先启动我们docker服务

service docker start


docekr启动完毕
我们接下来要安装nignx和php镜像,像mysql和redis就不做演示,我们镜像去哪里找呢
dockerhttps://hub.docker.com/

安装php、niginx、mysql

docker pull nginx:latest这里我直接拉最新版的niginx latest(最新版本)

docker pull php:7.4-fpmphp我们就拉php7.4版本就好了

docker pull mysql 取得mysql镜像

接下来我们要创建容器

docker 创建运行容器

docker images查看一下镜像

我们两个镜像都已经下载完毕,接下就创建运行容器
创建容器准备
1、创建nginx文件夹用来存放待会要挂载的目录,这里我是nginx文件夹mkdir -p /docker/nginx/www

2、docker run --name myphp-fpm -v /docker/nginx/www:/www -d 854be5bd67a6创建运行php7.4运行容器,名为 myphp-fpm
-v是挂载的目录,容器和服务器本身挂载。为的是以后不用进去容器内,既能修改
-d后台运行
854be5bd67a6php镜像的id,可以通过docker images
容器主要配置

3、创建运行容器,查看一下正在运行的docker的php容器·docker ps

docker start myphp-fpm

4、创建conf、conf.d目录mkdir -p /docker/nginx/conf/conf.d,一定要用
mkdir -p递归创建目录,即使上级目录不存在,会按目录层级自动创建目录

5、创建自己的conf文件,并写入自己的配置conf文件可以自己命名

docker_cloudduo_cn.conf文件

server {
    listen       80;
    server_name  docker.cloudduo.cn; #这里修改成自己的域名
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm index.php;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

  #当请求网站下php文件的时候,反向代理到php-fpm
    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

# 具体备注可以看 https://www.cnblogs.com/donghui521/p/10334776.html
# /www/ 对应目录/docker/nginx/www,如果根目录为/docker/nginx/www/cloudduo,则 /www/ 需要修改为 /www/cloudduo/

接下来就创建运行nginx的容器,并打通容器之间的互联

docker run --name nginx1 -p 8080:80 -d \
-v /docker/nginx/www:/usr/share/nginx/html \
-v /docker/nginx/conf/conf.d:/etc/nginx/conf.d \
--link myphp-fpm:php nginx

-p主机和容器端口互联,把 nginx 中的 80 映射到本地的 8080 端口。
-v目录挂载
/docker/nginx/www: 是本地 html 文件的存储目录,/usr/share/nginx/html 是容器内 html 文件的存储目录。
/docker/nginx/conf/conf.d: 是本地 nginx 配置文件的存储目录,/etc/nginx/conf.d 是容器内 nginx 配置文件的存储目录。
linknginx和php容器互联, 把 myphp-fpm 的网络并入 nginx,并通过修改 nginx 的 /etc/hosts,把域名 php 映射成 127.0.0.2,让 nginx 通过 php:9000 访问 php-fpm。

如果我们想进一步的修改nginx配置。我们可以使用docker exec -it aa18aaaf3806 \base\sh进去容器里修改对应配置aa18aaaf3806是容器的id

创建mysql的容器

docker run -d -e MYSQL_ROOT_PASSWORD=cloudduo.cn --name mysql1 -v /docker/mysql/data:/var/lib/mysql -p 3307:3306 mysql


解析域名

上面我已经通过conf文件,配置要绑定域名,接下来我们去服务商解析自己的域名都服务器ip地址即可

创建index.php

创建index.php,在/docker/nginx/www创建即可

<?php
echo phpinfo();
?>

调试运行

最后重启nginx

docker restart nginx1

nginx报错日志

docker logs -f nginx1

创建完成之后,在浏览器输入自己的绑定的域名即可,如非80端口记得输入你绑定的端口号