关于 Docker+Nginx+PHP 的运行环境,参考我之前的博文
但是如果要运行 Laravel 框架,还需要做更多的操作。
安装必要的工具 安装 Laravel 框架,必须要用到 composer 和 php-cli, 先用 docker 把它们 pull 下来
1 2 docker pull php docker pull composer 
php-cli 运行的例子:
1 docker run -it --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp php php -r "echo 'hello world';" 
composer 运行的例子:
1 docker run -it --rm --privileged -v $PWD:/app composer --version 
安装 Laravel 去 github 下载 Laravel 的源码
1 2 3 curl -sSL https://github.com/laravel/laravel/archive/master.tar.gz   tar zxv mv laravel-master /dmlkdata/apps/php/var/www/html/laravel cd  /dmlkdata/apps/php/var/www/html/laravel
编辑 composer.json,添加仓库镜像节点(Packagist 镜像使用方法 ),
1 2 3 4 5 6 "repositories" : {    "packagist" : {         "type" : "composer" ,         "url" : "https://packagist.phpcomposer.com"      } } 
利用 composer 安装依赖文件
1 docker run --rm -it --privileged -v $PWD :/app composer install 
配置 Laravel 配置.env 文件
生成 APP_KEY
1 docker run -it --rm --privileged -v "$PWD " :/usr/src/myapp -w /usr/src/myapp php php artisan key:generate 
安装 php 的扩展,比如数据库的 PDO 等:
1 2 3 4 docker exec  dmlkdockerphp docker-php-ext-install pdo pdo_mysql docker restart dmlkdockerphp docker diff dmlkdockerphp docker commit -m "add php ext:pdo,pdo_mysql"  -a "Broly"  dmlkdockerphp dmlkdockerphp:1.0.1 
编辑.env 文件,配置数据库相关信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 APP_NAME =LaravelAPP_ENV =localAPP_KEY =base64:pdgdc418iNuC3H20Mnh7OltF3XEb8VY7hD3L7lXPakg=APP_DEBUG =true APP_LOG =dailyAPP_LOG_LEVEL =debugAPP_URL =http://localhost  DB_CONNECTION =mysqlDB_HOST =dmlkdockermysqlDB_PORT =3306 DB_DATABASE =dmlklaravelDB_USERNAME =brolyDB_PASSWORD =admin  BROADCAST_DRIVER =logCACHE_DRIVER =fileSESSION_DRIVER =fileQUEUE_DRIVER =sync  REDIS_HOST =127.0 .0.1 REDIS_PASSWORD =nullREDIS_PORT =6379   MAIL_DRIVER =smtpMAIL_HOST =smtp.mailtrap.ioMAIL_PORT =2525 MAIL_USERNAME =nullMAIL_PASSWORD =nullMAIL_ENCRYPTION =null  PUSHER_APP_ID =PUSHER_APP_KEY =PUSHER_APP_SECRET= 
更改文件夹权限
1 2 chown -R 33.33 bootstrap/cache chown -R 33.33 storage/ 
初始化数据库等
1 2 3 docker run -it --rm --privileged --link dmlkdockermysql:dmlkdockermysql -v "$PWD " :/usr/src/myapp -w /usr/src/myapp dmlkdockerphp:1.0.1 php artisan migrate docker run -it --rm --privileged -v "$PWD " :/usr/src/myapp -w /usr/src/myapp php php artisan make:auth docker run -it --rm --privileged -v "$PWD " :/usr/src/myapp -w /usr/src/myapp php php artisan make:controller DemoController --resource 
配置 Nginx 新建配置文件 /dmlkdata/apps/nginx/etc/nginx/conf.d/laravel.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 server  {    listen        80 ;     server_name   laravel.dmlk.dev;             	 	root 	/var/www/html/laravel/public;     index 	index.php index.html index.htm;       location  / { 		try_files 	$uri $uri/ /index.php?$query_string;     }                        error_page    500  502  503  504   /50x.html;     location  = /50x.html {         root    /usr/share/nginx/html;     }                                            location  ~ \.php$  {         fastcgi_pass    dmlkdockerphp:9000 ;         fastcgi_index   index.php;         fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;         include         fastcgi_params;     }                                 } 
重启 Nginx
1 docker restart dmlkdockernginx 
运行结果 更改 hosts 文件,方便开发测试用:
找到本机服务器 IP 是 192.168.95.128 添加到 C:\Windows\System32\drivers\etc\hosts
1 192.168.95.128 laravel.dmlk.dev