有问题希望大神能帮忙指正,万分感谢!!
docker容器安装自行解决。
docker pull php:5.6-fpm
docker images
docker run -p 9000:9000 --name php -v /home/www:/www -v /home/conf:/usr/local/etc/php -v /root/logs:/phplogs -d php:5.6-fpm
命令说明:
-p 9000:9000 :将容器的9000端口映射到主机的9000端口
--name php :将容器命名为php
-v /home/www:/www :将主机中项目的目录www挂载到容器的/www
-v /home/conf:/usr/local/etc/php :将主机中当前目录下的conf目录挂载到容器的/usr/local/etc/php
-v /home/logs:/phplogs :将主机中当前目录下的logs目录挂载到容器的/phplogs
查看所有运行中的容器
docker ps
我这边php-fpm容器的名称是 :php
nginx容器的名称是:nginx
docker cp php:/usr/local/etc/php /home/conf/php
docker exec -it php /bin/bash
5.1安装php现有扩展 (如:sockets,mysql,mysqli,gd,openssl,pdo_mysql)
先执行:
/usr/local/bin/docker-php-ext-configure mysqli
然后执行:
/usr/local/bin/docker-php-ext-install mysqli
每个需要用到的扩展都执行一遍!
注意:安装gd扩展的时候需要
apt-get update
apt-get install -y libpcre3-dev libfreetype6-dev libjpeg62-turbo-dev libmcrypt-dev libpng-dev
docker-php-ext-configure gd
docker-php-ext-install gd
5.2、添加 redis 扩展
--------------------添加 redis 新扩展 开始-----------------------
使用5.1安装方法发现redis安装不了,是因为php里面没有redis扩展所需的代码。
注意:容器中各种命令都没有所以网上很多教程都是走不通,把人带到更深的坑里面去了
5.2.1、redis先使用浏览器下载(https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz)或者直接下载 https://download.csdn.net/download/u011477914/10944515
5.2.2、然后解压phpredis-3.1.3.tar.gz文件再重命名为redis
5.2.3、查找容器php所在目录随意查找php中特有的文件如:pro_mysql
find / -name "pro_mysql"
查找结果:
5.2.4、然后使用 XftpPortable (下载地址)工具 找到对应目录下(/var/lib/docker/overlay2/fe052a76034747bc6f82f5e450baac619dd3cdcca578155783ef601a57d6d39f/merged/usr/src/php/ext)然后直接把解压好的redis上传上去
先执行:
/usr/local/bin/docker-php-ext-configure redis
然后执行:
/usr/local/bin/docker-php-ext-install redis
--------------------添加 redis 扩展 完成-----------------------
docker restart php
到这php容器和相关扩展就安装配置好了。
1.1、下载nginx镜像
docker pull nginx
1.2、启动容器
docker run -p 80:80 --name nginx -v /home/www:/www -v /home/logs:/wwwlogs -d nginx #$pwd 或者 /root
1.3、查看已启动的容器
docker ps
1.4、拷贝容器中的配置文件到本地目录
docker cp nginx:/etc/nginx/nginx.conf /home/conf/nginx/nginx.conf #使用id或names【nginx】
1.5、停止容器
docker stop nginx
1.6、删除容器
docker rm nginx
1.7、运行新容器
docker run -p 80:80 -p 81:81 -p 82:82 -p 83:83 -p 84:84 -p 85:85 --name nginx -v /home/www:/www -v /home/conf/nginx/conf.d:/etc/nginx/conf.d -v /home/conf/nginx/nginx.conf:/etc/nginx/nginx.conf -v /home/logs:/wwwlogs -d nginx
docker inspect php |grep '"IPAddress"'
输出内容为: "IPAddress": "172.17.0.5",
vim /root/conf/conf.d/default.conf
location ~ \.php$ {
root /www;
fastcgi_pass 172.17.0.5:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;
include fastcgi_params;
}
docker restart mynginx
docker pull mysql:5.6
docker run -p 3306:3306 --name mysql -v /home/conf/mysql:/etc/mysql -v /home/logs:/logs -v /home/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
命令说明:
-p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。
-v /home/conf/mysql:/etc/mysql/:将主机当前目录下的 conf/mysql 挂载到容器的 /etc/mysql。
-v /home/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v /home/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
创建目录/home/conf/redis/并添加 redis.conf 和 redis.log 文件,并设置权限
redis.conf文件可从windows版本的redis.windows.conf修改名称然后用ftp上传到/home/conf/redis/目录中
mkdir -p /home/conf/redis
cd /home/conf/redis
touch redis.log
chmod -R 777 *
注意:配置文件redis.conf需要修改下面内容,否则启动不成功:
163行:logfile /etc/redis/redis.log
247行:dir /etc/redis
如果docker redis容器还是启动不了,可以查看/home/redis/redis.log日志文件。
如果要添加密码:
480行:requirepass 123456
如需要其他服务器访问:
61行:bind 0.0.0.0
docker pull redis
docker run -p 6379:6379 --name redis -v /home/conf/redis:/etc/redis -d redis redis-server /etc/redis/redis.conf --appendonly yes
命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v /home/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
查看redis的内部ip(172.17.0.6)
docker inspect redis |grep '"IPAddress"'
linux服务器IP地址(10.1.1.198)
redis内部ip(172.17.0.6)
1、在/root/www目录下新建index.php加入以下代码
connect('172.17.0.6', 6379);
$redis->auth("123456");
echo "Connection to server sucessfully";
//设置 redis 字符串数据
$redis->set("tutorial-name", "Redis tutorial");
// 获取存储的数据并输出
echo "Stored string in redis:: " . $redis->get("tutorial-name");
echo "
";
$mysqli = new mysqli("10.1.1.198", "root", "123456");
if(!$mysqli) {
echo"database error";
}else{
echo"php env successful";
}
$mysqli->close();
返回结果: