Docker内部署php nginx mysql redis 环境

Docker使用手册

大纲

1、拉取nginx mysql php的镜像
2、创建本地自定义网络
3、三个镜像在同一个网络内产生容器
4、三个容器就可以互相通信了
	 4.1、nginx连接fpm
	 4.2、fpm连接mysqld
5、fpm内安装php扩展
	5.1、进入fpm的容器内
	5.2 执行 docker-php-ext-install pdo pdo_mysql
	5.3 安装redis扩展,详情在下面
6、至此,三个容器之间互相都打通了,可以写一个index.php文件,输出phpinfo或者做一个sql查询,都是可以打通的。

拉取镜像

docker pull nginx 
docker pull php:7.2.34-fpm-alpine3.12 
docker pull mysql:5.6.35

生成自定义网络

docker  network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1  lnmp

查看网络

docker  network ls 

产生容器

docker run --name my_nginx -p 80:80 -v /var/www:/var/www -v /usr/local/nginx/conf/conf.d:/etc/nginx/conf.d -dit  --net lnmp  --privileged=true 605c77e624dd 
docker run -p 9000:9000 --name  my_php -v /var/www:/var/www -dit  --net lnmp  --privileged=true a63e75145178 
docker run -p 3306:3306 --name my_mysql -v /usr/local/mysql:/etc/mysql/sqlinit -e MYSQL_ROOT_PASSWORD=123456 -dit  --net lnmp  --privileged=true a0f5d7301767 

进入容器

docker  exec -it my_nginx  /bin/bash
docker  exec -it my_php   sh
docker  exec -it my_mysql  /bin/bash

重启所有容器

要注意启动顺序,php要比nginx先启动才可以
docker restart `docker ps -qa`

查看某个容器的ip

docker inspect --format='{{.NetworkSettings.IPAddress}}' my_php
docker inspect --format='{{.NetworkSettings.IPAddress}}' my_mysql

nginx内设置通信到fpm的方式

1、在conf文件内找到代码块:
location ~ \.php {
				····
				# my_php 是你的fpm的容器的名字
		        fastcgi_pass my_php:9000;
				····
	}

fpm连接mysql时,也是用同样的方式


header("Content-type:text/html;charset=utf8");
$config = [
# my_mysql是你的mysql容器的名字
    'host'     => 'my_mysql',
    'user'     => 'root',
    'password' => '123456',
    'database' => 'mysql',
    'charset'  => 'utf8'
];
$dsn    = sprintf(
    "mysql:host=%s;dbname=%s;charset=%s",
    $config['host'],
    $config['database'],
    $config['charset']
);

$pdo = new PDO($dsn, $config['user'], $config['password'], [ PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC ]);

$query = $pdo->query("SELECT version();");
print_r($query->fetchAll());
# 输出 Array ( [0] => Array ( [version()] => 5.6.35 ) ) 说明成功了

安装fpm内的redis扩展

docker  exec -it my_php   sh
curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/5.3.6.tar.gz
tar xfz /tmp/redis.tar.gz
rm -r /tmp/redis.tar.gz
mkdir -p /usr/src/php/ext
mv phpredis-5.3.6 /usr/src/php/ext/redis
docker-php-ext-install redis

你可能感兴趣的:(PHP,Docker,Nginx,docker,nginx,mysql,php,redis)