docker安装nginx+redis+php+mysql

docker安装nginx+redis+php+mysql

  • php
    • php安装
  • redis
    • redis安装
    • php安装redis扩展
    • 重启php
    • php连接redis
  • nginx
    • nginx安装
    • nginx配置
    • php运行
    • nginx运行并挂载
    • nginx重启
  • mysql
    • mysql安装
    • 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生成 ↩︎

你可能感兴趣的:(docker安装,docker,nginx,mysql)