Solo  当前访客:0 开始使用

布丁与画家的博客

努力改变一小部分人解决问题的方式

使用docker部署fastadmin基于ThinkPHP5.0后端框架

2019-12-23 14:03:44 iwh718
0  评论    0  浏览

❤️ ,这几天用Fa开发项目上线测试,用的docker部署,遇到一堆问题,下面把遇到的问题记录下来帮助其它小伙伴免入坑。

说说基本思路:

Ubuntu服务器 + Nginx + Docker

Docker内部运行一个PHP-FPM容器,由外部的Nginx转发到内部。

1.前排提醒:一定要把Fa的debug:False,不然加载异常缓慢,还有就是,如果你更改了css文件,记得打包压缩,因为关闭调试就是正式了。(如果你使用了主机映射,可以直接修改css文件后,安装nodejs和phpcli,使用压缩命令)

2.首先我们看一下项目目录:dev测试使用

image.png

然后使用scp或者FTP把项目上传到服务器,过程我就省略啦,如果你压缩了,可以使用apt-get install unzip来解压。

这里为了隐私:我们假设项目目录在 /fadev/phpdev/www/fa项目文件

这里之所以把项目放到主机上,为了将容器内部与主机外部映射,这样就可以直接修改外部文件实时更新了。

创建容器先下载一个php镜像:

docker pull php7.2-fpm

然后创建容器:-d 后台运行容器,--name 起个名字 -p 主机端口映射容器内部端口 -v 主机目录映射容器目录 --link 关联另一个容器,可以直接访问Mysql,最后是使用的镜像。

docker run -d --name fa-php-dev -p 9527:80 -v /fadev/phpdev/etc/:/usr/local/etc/php -v /fadev/phpdev/www/:/var/www/html --link mysql php:7.2-fpm

如果没有报错,说明成功运行了。下面配置Nginx,最后会说SQL导入。

下面有几个重点:nginx不支持url重写,会发生模块不可访问,使用/xxx/public/index.php?s=模块/这种可以访问,我们解决一下:

server {
        listen 80;
        server_name dev.test.cn;
       location / {
	//这里注意是指向主机目录,用容器的也行
        root   /fadev/phpdev/www/public;
        index  index.html index.htm index.php;
        if (!-e $request_filename) {
          rewrite ^/index.php(.*)$ /index.php?s=$1 last;
          rewrite ^(.*)$ /index.php?s=$1 last;
          break;
        }
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
   //这是容器目录,哪个目录都可以
        root   /var/www/html/public;
    }

     location ~ \.php(.*)$ {
	//重点来了,这里是PHP容器的内网地址:docker inspect 容器名去看看,将PHP转发到容器
        fastcgi_pass   172.17.0.6:9000;
        fastcgi_index  index.php;
	//重写url
        fastcgi_param SCRIPT_FILENAME /var/www/html/public$fastcgi_script_name;
        fastcgi_param PATH_INFO $1;
        include        fastcgi_params;
    }


  
      location /assets {
                //如果你遇到资源文件404,用这个,感谢前公司大佬帮忙,我之前用的正则匹配后缀去了,效果不好。
                alias /fadev/phpdev/www/public/assets;
        }
}

然后

Nginx -t //检查配置语法

Nginx -s reload //重启配置

下面处理MySQL:你需要进入Mysql容器里先创建一个fa的数据库

docker cp ./xx.SQL  mysql:/xx  //复制到容器里面 

docker exec -it mysql bash  
  
mysql -u root -p  
  
use xx database;  
  
source xx.SQL;  
  
exit;

导入数据库后,最后一个就是连接数据库:你需要到fa的数据库配置文件修改配置:

连接默认应该是:localhost或者127.0.0.1吧,换成mysql的内网地址:172.0.x 使用 docker insect mysql查看内网地址就好了。

然后输入 dev.test.cn 就行了。

docker ps

image.png


标题:使用docker部署fastadmin基于ThinkPHP5.0后端框架
作者:iwh718
地址:看看我的CSDN

web站点:骇客猫科技资讯
, ,



今日诗词
QQ交流群:914105779

标签

友链

存档

TOP