dnmp下新建laravel项目若干问题

1. 运行环境

dnmp

1). 当前使用的 Laravel 版本?

8.65

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.0

3). 当前系统

Windows 10 / Ubuntu 20.4

2. 问题描述?

原先的docker镜像是属于老项目(大多数都是yii框架)使用的。运行的php版本还是7.0版本,mysql版本是5.6版本。于是添加了8.0版本,准备进行安装laravel:
在dnmp的www目录中新建一个code文件夹,和code同级的文件夹是可以运行的项目目录,下面有N个项目。安装demo,最后执行:

./vendor/bin/sail up

提示:

⠿ laravel.test Error
...
Error response from daemon: driver failed programming external connectivity on endpoint example-app_redis_1 (25e18968001b454e790b855755b82d8c944421f8561aa90563363146e9891b48): Bind for 0.0.0.0:6379 failed: port is already allocated

想着之前有reids服务,就算不安装也应该没啥问题,但是访问的时候提示:

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.4.0".

3. 尝试

改变安装方式,使用composer的方式进行安装:

composer create-project laravel/laravel example-app

最后访问的时候依然提示:

Composer detected issues in your platform: Your Composer dependencies require a PHP version ">= 7.4.0".

查看电脑php版本为PHP 8.1.0 (cli),composer安装版本也为此版本。
查找了相关的解决方式是,在composer.json中添加:

"platform-check": false

然后分别执行:

php artisan config:cache
composer dump-autoload

但是治标不治本啊。
于是把之前项目的镜像都停了,laravel这边就可以正常访问了,但是启动那边的服务之后又发现那边的镜像无法启动,还是80端口被占用,也就是说现在只能跑一个容器,因为都使用了80端口。改了laravle下的docker-compose.yml的端口改为8080,但是提示laravel.test_1的80端口被占用。

4. 您期望得到的结果?

想请问一下,有没有什么方法能够让两个容器下的项目都能同时运行,并且共同使用80端口,或者其中一个使用其他端口进行使用,例如laravel使用8080端口?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
最佳答案

先抛一个我的仓库: 我的 dnmp 仓库 可以参考docker-compose.yml 那里被注释的php73地方

  1. 进行容器隔离: php7.2一个容器,php8.1 另一个容器

  2. 然后nginx的配置文件如下

        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass php72:9000;
            fastcgi_pass php81:9000;// 这样,就是使用对应版本的php容器了 php81是php8.1的那个容器名
    
            try_files $uri =404;
        }
  3. cli 模式下的话,进入对应的容器执行即可(或者参考我的readme,配置 bash alias)

2年前 评论
她来听我的演唱会 (楼主) 2年前
讨论数量: 5

先抛一个我的仓库: 我的 dnmp 仓库 可以参考docker-compose.yml 那里被注释的php73地方

  1. 进行容器隔离: php7.2一个容器,php8.1 另一个容器

  2. 然后nginx的配置文件如下

        location ~ \.php$ {
            include fastcgi_params;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass php72:9000;
            fastcgi_pass php81:9000;// 这样,就是使用对应版本的php容器了 php81是php8.1的那个容器名
    
            try_files $uri =404;
        }
  3. cli 模式下的话,进入对应的容器执行即可(或者参考我的readme,配置 bash alias)

2年前 评论
她来听我的演唱会 (楼主) 2年前
playmaker
2年前 评论
她来听我的演唱会 (楼主) 2年前
manbofish 11个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!