记录一次docker部署php全部过程(全网最细)

前言

太久没有写过博客的文章,今天就花个亿点的时间,来写一篇文章,我们就直面正题,拿了自己快过期的一台服务器。来用docker部署一下php,其他语言部署也是类似。我们都知道php传统部署模式都是lnmp组合,即liunx+nignx+mysql+php,这次mysql先忽略。步骤:先把需要的镜像下载过来,通过nginx反向代理给php-fpm.
服务器环境:liunx centos
1646635634537-0acb859c-2e87-4ee0-b7e5-2aecfcb59884.png

docker安装

首先我们来安装一下docker,使用官方安装脚本自动安装,安装命令如下

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

博主使用的第一个安装命令,第二个命令也可以用。之前安装使用过
安装使用 docker version 查看一下当前版本,是否安装完毕

docker拉取镜像

安装完之后,我们来看一下有没有镜像
1646637345908-644d0597-20cb-493f-a881-2c955b46c8a8.png
发现我们的docker还没有运行,先启动我们docker服务
service docker start
1646637525564-f934589d-2ef2-4045-a804-455a170db7cd.png
docekr启动完毕
我们接下来要安装nignx和php镜像,像mysql和redis就不做演示,我们镜像去哪里找呢
docker https://hub.docker.com/

安装niginx和php

docker pull nginx:latest 这里我直接拉最新版的niginx latest(最新版本)
1646639651339-4aec80c3-0037-4033-9ac0-2258cf640e4b.png
docker pull php:7.4-fpm php我们就拉php7.4版本就好了
1646640715676-df02a023-f466-4cf7-8be2-ae2d2bd4e38d.png
接下来我们要创建容器

docker 创建运行容器

docker images 查看一下镜像
1646641882230-037400ef-80c0-4ac1-bc61-df2c80f57eb5.png
我们两个镜像都已经下载完毕,接下就创建运行容器
创建容器准备

  1. 创建nginx文件夹用来存放待会要挂载的目录,这里我是nginx文件夹 mkdir -p /docker/nginx/www
    1646703163729-260ec886-4fb5-42b0-8dab-02b9fa3e55b1.png

2.docker run --name myphp-fpm -v /docker/nginx/www:/www -d 854be5bd67a6创建运行php7.4运行容器,名为 myphp-fpm
-v是挂载的目录,容器和服务器本身挂载。为的是以后不用进去容器内,既能修改
-d后台运行
854be5bd67a6 php镜像的id,可以通过docker images
容器主要配置
1646703287008-73ee64f7-85fe-404d-b8fa-bfbaf0495ae8.png
3.创建运行容器,查看一下正在运行的docker的php容器·docker ps
4.创建conf、conf.d目录 mkdir -p /docker/nginx/conf/conf.d,一定要用
mkdir -p递归创建目录,即使上级目录不存在,会按目录层级自动创建目录
1646703589330-a7d0b161-341d-475a-b2dd-aa0d862ee787.png
5.创建自己的conf文件,并写入自己的配置conf文件可以自己命名
1646703875821-954dbddc-1553-4c0e-a0aa-37819f0497c4.png

docker_zhihao1_cn.conf文件

server {
    listen       80;
    server_name  docker.zhihao.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

接下来就创建运行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 主机和容器端口互联,主机8080:80
-v 目录挂载
link nginx和php容器互联

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

解析域名

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

创建index.php

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

<?php
echo phpinfo();
?>

运行

创建完成之后,在浏览器输入自己的绑定的域名即可,记得输入你绑定的端口号
1646706984307-e1e28062-04c2-4e39-938b-88a07685d41f.png

后话

如果觉得后面的容器越来越多,我们可以使用docker-composer进行管理,如果想集群的可以使用docker Swarm

没有docker基础的,可以先去看我这篇文章,希望能帮到你,写的比较烂
docker教程,docker新手教程,docker笔记,docker命令大全

最后修改:2023 年 04 月 03 日 05 : 05 PM
如果觉得我的文章对你有用,请随意赞赏

10 条评论

  1. bb

    php-fpm和php有啥区别,我的程序只能用php 5.4以下版本,docker拉取不到

  2. ss

    OωO

  3. localhost 未发送任何数据 该网页无法正常运作,请教下

    1. 小豪
      @卢

      具体情况可以描述

      1. llj
        @小豪

        我也是这个问题,无法访问服务器

  4. lkz

    有学到 感谢!!

  5. 海街日记

    写的很棒

  6. aa
    该评论仅登录用户及评论双方可见
    1. 小豪
      @aa

      这个域名需要自己买的,解析到服务器id,就好了

    2. aa
      @aa
      该评论仅登录用户及评论双方可见

发表评论