使用 docker 快速启动 laravel 开发环境(初级)

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的配置文件,下载地址

1585379024946

三、运行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

1585374016652

进入phpfpm容器中,赋文件夹权限和创建新的app key

chmod -R 777 bootstrap/cache
chmod -R 777 storage

php artisan key:generate

然后就能正常访问啦:

1585139032578

对于访问的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文件,下载地址

1585379435769

# 继续在容器内运行如下命令,自动编译
npm run watch-poll

然后就看到运行成功啦:

1585380294717

访问网页如下:

1585379532437


“Chinese Virus”群众心理学大师川普的最新选举策略 - 西西弗评论 Instagram 美拍 - kimi850531