当前位置: 首页 > 后端技术 > PHP

自建Laravel的Docker开发环境

时间:2023-03-29 17:02:53 PHP

很久没有写东西了,今天就来说说如何自建一个Laravel运行的Docker环境。市面上最著名的是“laradock”https://github.com/laradock/laradockDockerPHP开发环境。使用参考:http://laradock.io既然是“自建”,我们可以参考这个,尽量满足Laravel运行的需要。以下是我列出的基本条件:软件:PHP7.2、Nginx、MySQL、Composer、NPM或Yarn等;使用国产镜子;使用国产镜子;使用国产镜子;易于扩展和使用,例如随时切换PHP版本或在Apache和Nginx之间切换。为了实现可扩展性,Docker-Compose和“laradock”一样,使用Docker-Compose编排方式将几个核心镜像组装在一起。php-fpm这里我们使用“DaoCloud”加速镜像——7.2-fpm-alpine。该版本同时使用PHP7.2和alpine最小系统。在此基础上,可以安装环境需要的额外工具:如composer、nodejs、python、yarn等。FROMdaocloud.io/php:7.2-fpm-alpineMAINTAINERcoding01运行sed-i's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'/etc/apk/repositoriesRUNapk添加--no-cache--virtual.build-deps\$PHPIZE_DEPS\curl-dev\imagemagick-dev\libtool\libxml2-dev\postgresql-dev\sqlite-dev\&&apk添加--no-cache\curl\git\imagemagick\mysql-client\postgresql-libs\&&peclinstallimagick\&&docker-php-ext-enableimagick\&&docker-php-ext-install\curl\iconv\mbstring\pdo\pdo_mysql\pdo_pgsql\pdo_sqlite\pcntl\tokenizer\xml\zip\&&curl-shttps://getcomposer.org/installer|php----install-dir=/usr/local/bin/--filename=composer\&&apkdel-f.build-deps#修改composer为国内镜像RUNcomposerconfig-grepo.packagistcomposerhttps://packagist.laravel-china.org#installprestissimoRUNcomposerglobalrequire"hirak/prestissimo"#安装laravelenvoyRUNcomposerglobalrequire"laravel/envoy"#installlaravelinstallerRUNcomposerglobalrequire"laravel/installer"RUNsed-i's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g'/etc/apk/repositoriesRUNapkupdate&&apkadd-unodejslibpng-devpythonENVPATH/root/.yarn/bin:$PATHRUNapkupdate\&&apk添加curlbashbinutilstar\&&rm-rf/var/cache/apk/*\&&/bin/bash\&&touch~/.bashrc\&&curl-o--Lhttps://yarnpkg.com/install.sh|bash\&&yarnconfigsetregistry'https://registry.npm.taobao.org'\&&npminstall-gcnpm--registry=https://registry.npm.taobao.orgWORKDIR/var/www所在的alpine系统插件安装完毕,我们使用mirrors.aliyun.com阿里云镜像php:7.2-fpm-alpine的具体使用可以参考:https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7nginx我们使用nginx,主要是加载网站的配置文件进入nginx。FROMdaocloud.io/nginx:1.13-alpineMAINTAINERcoding01ADDvhost.conf/etc/nginx/conf.d/default.confWORKDIR/var/www剩下的就是链接这些镜像了。最后查看docker-compose.yml文件内容:version:'2'services:#TheApplicationapp:build:context:./dockerfile:app.dockerfileworking_dir:/var/wwwvolumes:-../:/var/wwwenvironment:-"DB_PORT=3306"-"DB_HOST=database"-"REDIS_HOST=redis"-"REDIS_PORT=6379"#Web服务器web:build:context:./dockerfile:web.dockerfileworking_dir:/var/wwwvolumes_from:-appports:-8080:80#数据库database:image:daocloud.io/mysql:5.7.4volumes:-dbdata:/var/lib/mysqlenvironment:-"MYSQL_DATABASE=homestead"-"MYSQL_USER=homestead"-"MYSQL_PASSWORD=secret"-"MYSQL_ROOT_PASSWORD=secret"ports:-"3306:3306"redis:image:daocloud.io/library/redis:4.0.10-alpine命令:redis-server--appendonlyyesvolumes:dbdata:再测试一下创建一个Laravel项目composercreate-projectlaravel/laraveldemo注意:为了测试,可以结合vendor文件夹和composer.l把demo项目同文件夹下的.ock文件删除gitclone,gitclone我们自建的“laraveldocker”:gitclonehttps://github.com/fanly/laraveldocker.git修改docker-compose.yml为docker-compose。yml文件的路径执行我们的项目:app:build:context:./dockerfile:app.dockerfileworking_dir:/var/wwwvolumes:-../:/var/wwwbuild在laraveldocker下执行build命令:docker-compose整体起来速度还是挺快的。接下来进入容器dockerexec-itde075c525528bash,看看安装插件的效果:使用https://packagist.laravel-china.org国内镜像。注:本镜像是Laravel中国社区与游拍云、游帆远扬共同推出的公益项目,旨在为广大PHP用户提供稳定、高速的Composer国内镜像服务。推荐使用参考:http://laravel-china.org/topics/4484/composer-mirror-use-help使用yarn或cnpm安装插件:GenerateLaravelkeysecret:cp.env.example.envphpartisankey:generateApplicationkey[base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=]设置成功。运行看看效果:看下数据库连接,修改.env:DB_CONNECTION=mysqlDB_HOST=databaseDB_PORT=3306DB_DATABASE=homesteadDB_USERNAME=phphomesteadDB_PASSWORD=secret我们使用auth生成所有的布局,注册登录视图,路由认证接口。它还生成一个HomeController来处理应用程序的登录请求。使用phpartisanmigrate加载数据。我们看一下数据表:至此,说明我们已经连接到MySQL数据库OK了。综上所述,在学习过程中,使用别人制作的Dockerfile可以直接使用,但如果能自给自足就更好了。您还可以通过构建自己的docker开发环境来了解更多信息。未来会不断完善,尽量减少开发需求。代码已经放在github上,欢迎参考和提issue:https://github.com/fanly/laraveldocker最后,大家还可以阅读之前关于“Laradock”使用的文章:通过Laradock学习Docker——配置篇通过Laradock学习Docker-HTTPS