大佬勿看,都是基础的东西!本文大部分来自邯郸贾氏!
用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,不要复制我的
继续搞起
结束!