docker安装nginx+redis+php+mysql


首先操作系统win10 并且安装了docker

php

php安装

 docker pull php:5.6-fpm
 #docker pull php 获取最新的php

redis

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  

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

重启php

docker restart my-php5.6

phpinfo()

php连接redis

docker network ls
# 查看bridge  networkId
docker network inspect 3e2dd6a4e463

nginx

nginx安装

docker pull nginx

nginx配置

创建配置文件(路径D:\docker\nginx\conf) 特别关注一下 之后挂载会用到

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

runoob-test-php.conf

server {
    listen       80;#监听端口号
    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; [^1]

: 注脚的解释
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /usr/share/nginx/www/$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 my-php5.6 :--name)将容器命名为 my-php5.6-v ~/nginx/www:/www : 将本地项目的目录 www 挂载到容器的 www

nginx运行并挂载

 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

nginx重启

docker restart my-nginx

fastcgi_pass 1

mysql

mysql安装

docker pull mysql:5.7.31

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

phpinfo 没有pdo

添加扩展 首先进入php

docker exec -it my-php5.6 /bin/bash 
#pdo
docker-php-ext-install pdo
#pdo_mysql
docker-php-ext-install pdo_mysql

连接数据库 localhost连不上
查看容器的地址

docker network ls
#bridge  network id
docker network inspect bfada1238aaf6

  1. 经常会问到nginx和php-fpm的进程的进程的通信方式,这里用到是TCP
    Nginx和PHP-FPM的进程间通信有两种方式,一种是TCP,一种是UNIX Domain Socket.
    TCP是IP加端口,可以跨服务器.
    UNIX Domain Socket不经过网络,只能用于Nginx跟PHP-FPM都在同一服务器的场景.
    方式1:
    php-fpm.conf: listen = 127.0.0.1:9000
    nginx.conf: fastcgi_pass 127.0.0.1:9000;
    方式2:
    php-fpm.conf: listen = /tmp/php-fpm.sock
    nginx.conf: fastcgi_pass unix:/tmp/php-fpm.sock;
    其中php-fpm.sock是一个文件,由php-fpm生成 ↩︎

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mr.杰瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值