使用 docker 快速启动 laravel 开发环境(初级)
2020-03-26 tech linux php docker 8 mins 6 图 2995 字
laravel 7 已经发布了。作为一个懒人我很不情愿在我的开发机器上安装composer、php、nginx以及数据库等组件,也包括Homestead虚拟机。 本文是我在尝鲜 laravel 7.3时完成的内容。所有的一切只需要系统装有docker。
一、composer初始化项目
创建 composer 容器并进入
linux/mac在项目根目录下运行如下命令:
cdir="$(cd "$(dirname "$0")" && pwd)"
docker run -it --rm -v ${cdir}:/app composer /bin/bash
windows我不会写路径,手动改吧。
docker run -it --rm -v D:\Github:/app composer /bin/bash
使用淘宝源
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
初始化项目
composer create-project --prefer-dist laravel/laravel web --ignore-platform-reqs
至此,一个laravel项目就初始化完成了。
退出容器
exit
composer 常用命令
cdir="$(cd "$(dirname "$0")" && pwd)"
docker run -it --rm -v ${cdir}:/app composer install --ignore-platform-reqs
二、增加php/nginx配置
在这个目录结构下分别增加nginx和php的配置文件,下载地址:
三、运行php容器
在这里我运行了nginx、php、composer-install和yarn的容器:
docker-compose.yaml
version: "3.2"
volumes:
lnmpsock: {}
yarnfile: {}
services:
nginx:
image: openresty/openresty:alpine
restart: always
container_name: nginx
volumes:
- ./:/var/www/html:rw
- ./docker/openresty/conf.d:/etc/nginx/conf.d:rw
- ./docker/openresty/conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf:rw
- ./docker/tmp/openresty:/etc/nginx/fastcgi_cache/one_hour:rw
- ./docker/log:/log:rw
- type: bind
source: lnmpsock
target: /sock
ports:
- "80:80"
php:
image: php:fpm-alpine
restart: always
container_name: phpfpm
volumes:
- ./:/var/www/html:rw
- ./docker/php/php-fpm.d:/usr/local/etc/php-fpm.d
- ./docker/php/conf/php-fpm.conf:/usr/local/etc/php-fpm.conf
- ./docker/log:/log:rw
- type: bind
source: lnmpsock
target: /sock
composer-install:
image: composer
restart: "no"
container_name: composer-install
volumes:
- ./:/app:rw
entrypoint: [ composer,install,--ignore-platform-reqs ]
privileged: true
yarn:
image: kelvinblood/yarn
restart: always
container_name: yarn
stdin_open: true
tty: true
volumes:
- ./:/var/www/html:rw
- type: bind
source: yarnfile
target: /usr/local/share/.cache/yarn
entrypoint: [ "/bin/bash" ]
运行 docker-compose up -d
进入phpfpm容器中,赋文件夹权限和创建新的app key
chmod -R 777 bootstrap/cache
chmod -R 777 storage
php artisan key:generate
然后就能正常访问啦:
对于访问的IP你可能有点疑问,Windows下使用127.0.0.1即可。
如果遇到不能访问的,Windows下docker的默认网段为10.0.75.0/24,使用.1 .2也能访问,即10.0.75.2。
如果你是跑在局域网的服务器里,访问服务器的IP即可。
到这一步其实已经完成啦。由于laravel和前端项目关联也比较紧密,下面再记录一个和前端工具的绑定的容器步骤。
四、使用SaaS、Laravel Mix等前端工具
# 进入yarn容器:
$ docker exec -it yarn /bin/bash
# 设置源,安装依赖
yarn config set registry https://registry.npm.taobao.org
SASS_BINARY_SITE=http://npm.taobao.org/mirrors/node-sass yarn
# 安装常用前端组件
npm install vue vue-template-compiler jquery bootstrap --save-dev --production=false
修改一下 Mix 的配置文件 webpack.mix.js
mix.js('resources/js/app.js', 'public/js')
.sass('resources/sass/app.scss', 'public/css')
.version();
在末尾加了一个 version()
,使 Mix 每次生成的静态文件后面加上一个类似版本号的参数,避免浏览器缓存。
增加一些简单的blade文件和SaaS文件,下载地址:
# 继续在容器内运行如下命令,自动编译
npm run watch-poll
然后就看到运行成功啦:
访问网页如下: