DNMP一键部署PHP8.2和Laravel10的Docker环境
服务器环境
所有命令皆在root用户下运行
VMware虚拟机下的ubuntu22.04
docker24.0.7
docker-compose 2.6.1
yeszao/dnmp开源仓库仓库地址:https://gitee.com/yeszao/dnmp
本文章只提供整个部署的过程,对docker、dockerFile以及docker-compse的知识最好有初步的认识,才能更好的理解
流程
① 首先在/www文件夹拉取dnmp项目,代码如下:
root$ mkdir /www #根目录下创建www文件夹
root$ cd /www #切换到www目录
root$ git clone https://gitee.com/yeszao/dnmp.git #克隆dnmp项目
root$ cd dnmp #切换到dnmp文件夹
root$ cp env.sample .env # 复制环境变量文件
root$ cp docker-compose.sample.yml docker-compose.yml # 复制 docker-compose 配置文件。默认启动3个服务:
# Nginx、PHP7和MySQL8。要开启更多其他服务,如Redis、
# PHP5.6、PHP5.4、MongoDB,ElasticSearch等,请删
# 除服务块前的注释
② 创建Laravel项目(在dnmp的www文件夹下) 请忽略第二步,在这里创建项目不是我们的目的,等容器启动完在进入PHP容器创建较为稳妥,除非你是要将已有的项目clone到这里
root$ cd www #进入dnmp的www文件夹
root$ composer create-project laravel/laravel Laravel10 #创建Laravel项目,并命名为Laravel10
root$ cd .. #回到dnmp文件夹进行下一步操作
③ 修改dnmp的.env文件使用php8.2版本
root$ vim .env #编辑 .env文件
在.env文件中找到以下内容
PHP80_VERSION=8.0.30
PHP80_PHP_CONF_FILE=./services/php80/php.ini
PHP80_FPM_CONF_FILE=./services/php80/php-fpm.conf
PHP80_LOG_DIR=./logs/php80
PHP80_EXTENSIONS=pdo_mysql,mysqli,mbstring,gd,curl,opcache
将 8.0.30 改为8.2并保存退出
PHP80_VERSION=8.2
④ 修改nginx容器的配置文件
root$ vim services/nginx/conf.d/localhost.conf
改动如下图(四处改动,root的第二个是你laravel项目的主目录名,这里只为快速启动,想要将laravel项目配置到其他端口可以新建配置文件,再到docker-compose.yml进行端口映射即可)
⑤ 修改docker-compose文件,找到php80的位置
root$ vim docker-compose.yml
⑥ 启动各个容器(这里启动mysql5、nginx、php80;ps:若为mysql8则将mysql5改为mysql即可)
root$ docker-compose up mysql5 nginx php80
等待docker对各个镜像的下载和编排启动,一般不会出什么问题,若出错请百度其他文章解决, 有个小坑,如果你也和我一样使用VMware的话,请不要在共享文件夹进行这些操作,否则编排容器时会报错,我找不到解决办法 ┭┮﹏┭┮
出现以下界面即为启动成功,或者查看docker容器,是否存在你启动的容器
⑦别急,最后一步,按照docker的理念,我们应该进入php80容器执行php以及composer命令,创建laravel10项目
root$ docker ps #查看运行中的容器,主要是为了查看php80容器的id
root$ docker exec -it 19faa598ed76 sh #19faa598ed76 请改为你直接的php80容器id
/www$ composer create-project laravel/laravel Laravel10 #创建laravel10项目
#建议将更改composer为国内镜像源,https://learnku.com/articles/15977/composer-accelerate-and-modify-mirror-source-in-china
/www$ chown -R www-data:www-data /www/Laravel10/storage #若你使用mysql5进入容器后请运行此条命令
/www$ chmod -R 775 /www/Laravel10/storage #若你使用mysql5进入容器后请运行此条命令,否则无法写入日志文件报错
#进入容器后就是简单的Laravel初始化操作了,即安装依赖以及生成appkey
#composer install
#php artisan key:generate
#初始化完成后exit退出容器控制台
最后
- 给个赞?
- 项目端口为80,请访问服务器or虚拟机的ip地址即可
- 对于dnmp的更多详细内容请阅读仓库的yeszao/dnmp 的 Readme.md