参考:https://www.jianshu.com/p/243849fa218e
http://cnblogs.com/btsn/p/11244887.html(安装php7.3)
https://blog.csdn.net/shenhonglei1234/article/details/84786443(mysql5.8以上设置权限分开设)
https://blog.csdn.net/u010071211/article/details/80594885(php-redis)
https://blog.csdn.net/moxioakong788/article/details/81744738(安装php5.6)

  • 之前尝试了docker搭环境,方式是直接拉个centos然后里面装lnmp,然后文件映射跑起来的,现在随着对docker认识的加深和认识到有更好的方式来搭,所以花了靠两天时间又搭了一个。
  • 这次的基础环境是用ubuntu,在ubuntu里面安装php+nginx跑一个docker简称容器A,然后再跑一个mysql的docker简称容器B,跑的时候用容器A直接连跑在外面的容器B就好了。

以下是简短的操作流程

// 先拉个最新的ubuntu
docker run -p 80:80 -it ubuntu:latest
// 进入,提前处理内部
apt-get update
apt-get install -y vim

// 步骤一 apt-get install nginx nginx -v nginx -t service nginx status// url测试

// 步骤二 apt-get install software-properties-common python-software-properties add-apt-repository ppa:ondrej/php && sudo apt-get update apt-get -y install php7.3 // 安装php的各个扩展 apt-get install -y php7.3-fpm php7.3-mysql php7.3-curl php7.3-json php7.3-mbstring php7.3-xml php7.3-intl php -v // phpinfo测试

php的各个扩展直接安装
apt-get install php7.3-gd
sudo apt-get install php7.3-soap
sudo apt-get install php7.3-gmp
sudo apt-get install php7.3-odbc
sudo apt-get install php7.3-pspell
sudo apt-get install php7.3-bcmath
sudo apt-get install php7.3-enchant
sudo apt-get install php7.3-ldap
sudo apt-get install php7.3-opcache
sudo apt-get install php7.3-readline
sudo apt-get install php7.3-sqlite3
sudo apt-get install php7.3-xmlrpc
sudo apt-get install php7.3-bz2
sudo apt-get install php7.3-interbase
sudo apt-get install php7.3-pgsql
sudo apt-get install php7.3-recode
sudo apt-get install php7.3-sybase
sudo apt-get install php7.3-xsl
sudo apt-get install php7.3-cgi
sudo apt-get install php7.3-dba
sudo apt-get install php7.3-phpdbg
sudo apt-get install php7.3-snmp
sudo apt-get install php7.3-tidy
sudo apt-get install php7.3-zip

然后nginx和php都安装好了,我们需要调整和php-fpm相连的conf使能跑php文件

/** 下面的fastcgi_pass使用的是
/etc/php/7.3/fpm/php-fpm.conf和/etc/php/7.3/fpm/pool.d/www.confd
的
listen = /run/php/php7.3-fpm.soc决定的
*/
server {
    listen 80;
    #server_name  www.deskpic.top;
    index index.html index.php
    client_max_body_size 50M;
   # error_log /home/deploy/apps/logs/example.error.log;
   # access_log /home/deploy/apps/logs/example.access.log;
   root /var/www/html;

location <span class="token operator">/</span> <span class="token punctuation">{<!-- --></span>
    try_files <span class="token variable">$uri</span> <span class="token variable">$uri</span><span class="token operator">/</span> <span class="token operator">/</span>index<span class="token punctuation">.</span>php<span class="token variable">$is_args</span><span class="token variable">$args</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>

location <span class="token operator">~</span> \<span class="token punctuation">.</span>php <span class="token punctuation">{<!-- --></span>
    try_files <span class="token variable">$uri</span> <span class="token operator">=</span> <span class="token number">404</span><span class="token punctuation">;</span>
    fastcgi_split_path_info <span class="token operator">^</span><span class="token punctuation">(</span><span class="token punctuation">.</span><span class="token operator">+</span>\<span class="token punctuation">.</span>php<span class="token punctuation">)</span><span class="token punctuation">(</span><span class="token operator">/</span><span class="token punctuation">.</span><span class="token operator">+</span><span class="token punctuation">)</span>$<span class="token punctuation">;</span>
    <span class="token keyword">include</span> fastcgi_params<span class="token punctuation">;</span>
    fastcgi_param <span class="token constant">SCRIPT_FILENAME</span> <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span>
    fastcgi_param <span class="token constant">SCRIPT_NAME</span> <span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span>
    fastcgi_index index<span class="token punctuation">.</span>php<span class="token punctuation">;</span>
    fastcgi_pass unix<span class="token punctuation">:</span><span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>run<span class="token operator">/</span>php<span class="token operator">/</span>php7<span class="token punctuation">.</span><span class="token number">3</span><span class="token operator">-</span>fpm<span class="token punctuation">.</span>sock<span class="token punctuation">;</span>

# fastcgi_pass 127.0.0.1:9000; } }

然后尝试网页访问php文件成功🐱‍🚀

  • 接着原来尝试还是在ubuntu里面安装mysql,成功是成功了,但是怎么设置外部都是访问不了mysql,3306也开了都不行,然后就换种思路mysql使用镜像跑到外面来吧🐱‍🏍
docker pull mysql:8.0
docker run -dit -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --privileged=true --name=mysql_try 30f937e841c8
// 进入容器里面的mysql命令行
create user 'adminroot' identified with mysql_native_password by '666666';
grant all privileges on *.* to 'adminroot';
flush privileges;

先navicat尝试连接
在这里插入图片描述
再php尝试连接,搞好😎

<?php
$mysqli = new mysqli("localhost", "root", "password"); 
if(!$mysqli)  { 
    echo "连接失败!"; 
}else{ 
    echo "连接成功!"; 
} 
$mysqli->close(); 
  • 安装redis+php
apt-get install redis-server
apt-get install php7.3-readline
apt-get install php-redis

重启php查看service php7.3-fpm restart,OK
在这里插入图片描述
设置redis密码,vim /etc/redis/redis.conf设置requirepass nidemima
重启redis,service redis-server restart,命令行查看redis-cli -a nidemima