255 win10安装docker运行php代码

大佬勿看,都是基础的东西!本文大部分来自邯郸贾氏!

用docker访问两个项目和一个本地index.php

一、安装好docker后

拉取php命令

 docker pull php:5.6-fpm
#(注释:如果不加版本号会拉取最新的php版本)

拉取nginx命令

docker pull nginx
(注释:如果不加版本号会拉取最新的)

二、配置nginx

在win10随便找一地方,开始新建文件夹(目录结构注意一下子)

D:\docker\nginx\conf\runoob-test-php.conf

注释:之所以这么配置,是我用的tp5框架,直接访问的是public/index.php,并且我想多个项目同时运行

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/www/tp1/public;
        index  index.html index.htm index.php;
    }

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

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/www/tp1/public/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

把php运行起来

docker run --name my-php5.6 -v D:/docker/nginx/www:/usr/share/nginx/www php:5.6-fpm
//注意你的文件路径
--name myphp-fpm : 将容器命名为 myphp-fpm。

-v ~/nginx/www:/www : 将主机中项目的目录 www 挂载到容器的 /www
这个名字是你自己命名的my-php5.6,这后面的路径不要搞错了!!!

2.1、挂载起来

 docker run --name my-nginx -p 8080:80 -d -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/docker/nginx/conf:/etc/nginx/conf.d --link my-php5.6:php nginx

重启很重要:docker restart my-nginx

浏览器访问一下:

2.2、再挂载一个项目tp2

docker run --name my-nginx2 -p 8082:82 -d -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/docker/nginx/conf:/etc/nginx/conf.d --link my-php5.6:php nginx

nginx配置起来

本地的8082端口对应docker上的82端口

重启很重要:docker restart my-nginx2

server {
    listen       82;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/www/tp2/public/;
        index  index.html index.htm index.php;
    }

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

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/www/tp2/public//$fastcgi_script_name;
        include        fastcgi_params;
    }
}

2.2、下面再搞起一个挂载

命令挂载起来

 docker run --name my-nginx3 -p 8088:88 -d -v D:/docker/nginx/www:/usr/share/nginx/www -v D:/docker/nginx/conf:/etc/nginx/conf.d --link my-php5.6:php nginx

conf配置搞起

server {
    listen       88;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/www;
        index  index.html index.htm index.php;
    }

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

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/www/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

重启很重要:docker restart my-nginx3

现在桌面版docker的状态

三、安装mysql

docker pull mysql:5.7.31
#注释:不加版本号会拉取最新版的mysql,记得加上版本号

windows本地文件搞起

挂载mysql

docker run --name my-mysql -p 3306:3306 -d -v D:/docker/mysql/data:/mysql_data -v D:/docker/mysql/logs:/logs -v D:/docker/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --link my-php5.6 mysql:5.7.31

账号:root 密码 123456

本地Navicat链接上数据库

查看有没有安装pdo和pdo_mysql扩展

phpinfo();

没有的话安装,有的话忽略

#pdo
docker-php-ext-install pdo
#pdo_mysql
docker-php-ext-install pdo_mysql

数据库配置搞起(tp5的配置)

服务器地址看起

docker network ls
docker network inspect bbcda948daf6

docker上mysql对应的IP,注意一下子!!!

搞起一个测试的表,弄两条数据

tp5里面打印搞起

页面输出搞起:

关于docker中的网络:看起https://blog.csdn.net/Tiramisu_5/article/details/112570751?spm=1001.2014.3001.5501

四、docker安装redis

docker pull redis
注释:不加版本号拉取的是最新的

docker run -d --name my-redis -p 6379:6379 -v /d/docker/redis/data:/data redis --appendonly yes

参数说明:
-d ------ 后台运行
--name ------ 实例运行后的名字 my-redis
-p6379:6379 ------ 端口映射,冒号前面是windows下的端口,后面是虚拟机的端口
-v /d/docker/redis/data:/data ------ 保存数据的位置。

d:\docker\redis\data 前面是windows下的实际保存数据目录
/data 虚拟机内的目录
redis --appendonly yes ------ 在容器执行redis启动命令,并打开redis持久化配置。

看看是不是成功安装了,

docker exec -it my-redis redis-cli

info搞起,成功了,下面要安装phpredis扩展

在经过一系列报错之后

在即将崩溃之际发现了转机

报错为:fatal error: zend_smart_str.h: No such file or directory

出现这个问题是redis模块版本问题,phpredis版本问题,重新找版本呀

进入php继续安装redis扩展:

 docker exec -it my-php5.6 /bin/bash

#先建个目录:
mkdir -p /usr/src/php/ext
#执行下面的扩展:
curl -L -o /tmp/redis.tar.gz http://pecl.php.net/get/redis-2.2.7.tgz && tar -zxvf /tmp/redis.tar.gz && rm -r /tmp/redis.tar.gz  && mv redis-2.2.7 /usr/src/php/ext/redis && docker-php-ext-install redis

版本找对了,特娘的终于成功了

重要的一步:重启 docker restart my-php5.6

链接吧,win10桌面版redis,没有安装的百度一下,安装好,链接一下

php代码测试吧,搞起

test.php又报错:

docker上的ip不是127.0.0.1,看看是啥吧

docker network ls

docker network inspect 7e1dc7e4e574

注释:用你自己的NETWORK ID,不要复制我的

继续搞起

结束!

猜你喜欢

转载自blog.csdn.net/phpstory/article/details/115262010
255
今日推荐