Docker演示之php+nginx+mysql环境搭建

前言

这里主要用于记录网上学习到的docker技术,具体讲解到了如何下载、启动mysql、php、nginx镜像,并且完成了三者之间的合作。具体视频点此处

MySQL镜像的下载及部署

  1. 拉取镜像
    docker pull mysql
    
  2. 使用该镜像启动容器
    docker run -p 33066:3306 -v /Users/weihuanwen/software/DockerProject/StudyProject/mysql/:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d --name=mysql mysql
    
    这里需要强调以下几点:
    ①通过命令:docker inspect mysql查出Volumes下有mysql设置好的挂载点,即/var/lib/mysql
    ②启动mysql的命令中需要预先设定其root的密码,即加入-e参数
    ③这里是将本地的33066端口映射到了容器的3306端口
  3. 启动后观察事先创建好的mysql目录
    将mysql容器内重要文件挂载至本地目录
  4. 构造数据
    ①创建数据库:test
    ②创建表:user,设置一个name字段
    ③插入几个名字
    构造的数据

PHP镜像的下载及部署

  1. 拉取镜像
    这里需要使用的是带有fpm的php:7.2-fpm版本镜像,通过前面的学习知道部署好的php环境中仍缺少插件pdo_mysql,所以这里将整个过程整理为Dokerfile文件来生成镜像即可。
    ①下面就是Dockerfile的内容:
    Dockerfile的内容
    ②将写好的Dockerfile文件放置在事先创建好的php文件夹下 Dockerfile路径展示
    ③在当前路径下执行镜像的构建命令

    docker build -t php72-fpm .
    

    ④生成后的镜像如下
    php7.2-fpm镜像展示

  2. 使用该镜像启动容器

    docker run -itd -v /Users/weihuanwen/software/DockerProject/StudyProject/code/:/var/www/html --link mysql:mysql --name=php php72-fpm
    

    这里需要强调以下几点:
    ①通过docker inspect php72-fpm未找到其提供的挂载点,但找到一个WorkingDir可用
    ②需要被挂载的本地目录code是事先创建好的,用于存放测试代码
    ③代码执行需要取mysq中的数据,所以需要与mysql进行关联
    进入启动后的php容器内,可以看到代码已加载进入容器:
    php容器内的代码展示

Nginx镜像的下载及部署

  1. 拉取镜像

    docker pull nginx
    
  2. 启动nginx来获取其配置文件

    # 启动nginx容器
    docker run -itd -p 8888:80 --name=nginx nginx
    # 进入容器,并获取配置文件的路径为:/etc/conf.d/default.conf
    docker exec -it nginx /bin/bash
    # 将该配置文件从容器拷贝到本地事先创建好的nginx目录下
    docker cp nginx:/etc/conf.d/default.conf .
    
  3. 修改本地default.conf配置文件

    server {
        listen       80;
        listen  [::]:80;
        server_name  localhost;
    
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;
    
        # 设置root变量
        set $root '/var/www/html';
    
        location / {
            root   $root;
            index  index.html index.htm;
        }
    
        #error_page  404              /404.html;
    
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}
    
        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        # 将127.0.0.1改为php
        location ~ \.php$ {
            root           $root;
            fastcgi_pass   php:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $root$fastcgi_script_name;
            include        fastcgi_params;
        }
    
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
  4. 还需要强调以下几点!
    ①配置文件中修改了nginx的欢迎文件加载位置为/var/www/html,但目录下我们并没有index.html文件。这样就会导致nginx启动报错。所以,我们会在本地创建一个index.html,并在启动nginx时将此文件挂载至容器内。
    ②location ~ .php中也使用了root变量,这是应为root变量的值恰巧与php中代码存放路径一致而已。如果php中代码存放路径并非/var/www/html,这里也无法使用$root变量了。
    ③ocation ~ .php的php:9000中,php表示这php容器的ip地址。我们会在启动nginx时关联php容器并为其设置别名php,这也是配置文件中设置为php:9000的由来。
    ④nginx的日志我们最好挂载至本地方便查看,nginx容器中日志存放的位置:/var/log/nginx
    ⑤我们需要将本地code目录挂载至nginx的/var/www/html下,这样通过nginx访问code下的php文件时,会将其重定向至php容器的执行脚本

  5. 了解了以上的内容,我们来启动nginx容器

    docker run -itd -p 8888:80 -v /Users/weihuanwen/software/DockerProject/StudyProject/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /Users/weihuanwen/software/DockerProject/StudyProject/nginx/index.html:/var/www/html/index.html -v /Users/weihuanwen/software/DockerProject/StudyProject/nginx/logs/:/var/log/nginx/ -v /Users/weihuanwen/software/DockerProject/StudyProject/code/:/var/www/html --link php:php --name=nginx nginx
    

通过Nginx查看php脚本执行结果

  1. 打开浏览器输入网址:localhost:8888/index.php
    在这里插入图片描述
    这里产生了报错,因为8.0版本需要手动的去修改mysql容器内的root密码

  2. 进入mysql容器手动修改root密码

    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
    

    在这里插入图片描述

  3. 打开浏览器再次输入网址:localhost:8888/index.php

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值