首页 > 编程 > PHP > 正文

自己搭建一个 Laravel 的 Docker的开发环境的方法

2020-03-22 20:32:41
字体:
来源:转载
供稿:网友
这篇文章给大家分享的内容是关于自己搭建一个 Laravel 的 Docker的开发环境,有一定的参考价值,有需要的朋友可以参考一下。

好久没写东西,今天说一说怎么自建一个 Laravel 运行的 Docker 环境。

市面上最出名的莫过于「laradock」https://github.com/laradock/laradock

Docker PHP development environment.
使用参考:http://laradock.io

既然是「自建」,那我们可以参考这个,最小化满足 Laravel 运行的需要。

下面是我罗列出的基本条件:

软件:PHP 7.2、Nginx、html' target='_blank'>MySQL、Composer、NPM or Yarn 等等;

使用国内镜像;使用国内镜像;使用国内镜像;

易于扩展使用,如随时可以切换 PHP 版本,或者 Apache 和 Nginx 切换使用。

Docker-Compose

要达到可扩展行,和「laradock」一样,使用 Docker-Compose 编排的方式,将核心的几个 image 组装在一起。

php-fpm

这里我们使用的是「DaoCloud」加速镜像 —— 7.2-fpm-alpine。

该版本既用 PHP 7.2 版本,而且 alpine 最小化系统,可以基于此,安装环境需要的额外工具:如,composer、nodejs、python、yarn 等。

FROM daocloud.io/php:7.2-fpm-alpineMAINTAINER coding01 yemeishu@126.com RUN sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositoriesRUN apk add --no-cache --virtual .build-deps / $PHPIZE_DEPS / curl-dev / imagemagick-dev / libtool / libxml2-dev / postgresql-dev / sqlite-dev / apk add --no-cache / curl / git / imagemagick / mysql-client / postgresql-libs / pecl install imagick / docker-php-ext-enable imagick / docker-php-ext-install / curl / iconv / mbstring / pdo / pdo_mysql / pdo_pgsql / pdo_sqlite / pcntl / tokenizer / xml / zip / curl -s https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin/ --filename=composer / apk del -f .build-deps# 修改 composer 为国内镜像RUN composer config -g repo.packagist composer https://packagist.laravel-china.org# install prestissimoRUN composer global require hirak/prestissimo # install laravel envoyRUN composer global require laravel/envoy #install laravel installerRUN composer global require laravel/installer RUN sed -i s/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g /etc/apk/repositoriesRUN apk update apk add -u nodejs libpng-dev pythonENV PATH /root/.yarn/bin:$PATHRUN apk update / apk add curl bash binutils tar / rm -rf /var/cache/apk/* / /bin/bash / touch ~/.bashrc / curl -o- -L https://yarnpkg.com/install.sh | bash / yarn config set registry https://registry.npm.taobao.org / npm install -g cnpm --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-254fc62ef5c7

nginx

我们使用 nginx,主要是将网站的配置文件载入 nginx 中。

FROM daocloud.io/nginx:1.13-alpineMAINTAINER coding01 yemeishu@126.com ADD vhost.conf /etc/nginx/conf.d/default.confWORKDIR /var/www

剩下就是连接这些 images。最后看看 docker-compose.yml 文件内容:

version: 2 services: # The Application app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www environment: - DB_PORT=3306  - DB_HOST=database  - REDIS_HOST=redis  - REDIS_PORT=6379  # The Web Server web: build: context: ./ dockerfile: web.dockerfile working_dir: /var/www volumes_from: - app ports: - 8080:80 # The Database database: image: daocloud.io/mysql:5.7.4 volumes: - dbdata:/var/lib/mysql environment: - 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 command: redis-server --appendonly yesvolumes: dbdata:
测试一遍创建 Laravel 项目
composer create-project laravel/laravel demo

注:为了做测试,可以将 vendor 文件夹和 composer.lock 文件删除。

git clone

在 demo 项目相同文件夹下,git clone 我们自建的「laraveldocker」:

git clone https://github.com/fanly/laraveldocker.git
修改 docker-compose.yml

将 docker-compose.yml 文件的路径执行我们的项目:

app: build: context: ./ dockerfile: app.dockerfile working_dir: /var/www volumes: - ../:/var/www
build

在 laraveldocker 下执行构建命令:

docker-compose up


整个速度还是蛮快的


接下来进入容器内

docker exec -it de075c525528 bash

我们看看安装插件的效果:


使用的是 https://packagist.laravel-china.org 国内镜像。

注:该镜像是由 Laravel China 社区联合 又拍云 与 优帆远扬 共同合作推出的公益项目,旨在为广大 PHP 用户提供稳定和高速的 Composer 国内镜像服务。

值得推荐使用

参考:http://laravel-china.org/topics/4484/composer-mirror-use-help

使用 yarn 或者 cnpm 安装插件:


生成 Laravel key secret:

cp .env.example .envphp artisan key:generateApplication key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully.

运行下看看效果吧:

我们接下来看看数据库连接吧,修改 .env:

DB_CONNECTION=mysqlDB_HOST=databaseDB_PORT=3306DB_DATABASE=homesteadDB_USERNAME=homesteadDB_PASSWORD=secret

我们使用 php artisan make:auth 来生成布局、注册和登录视图以及所有的认证接口的路由。同时它还会生成 HomeController 来处理应用的登录请求。使用 php artisan migrate 来载入数据。


我们看看数据表:


至此,说明我们连接 MySQL 数据库 OK.

总结

在学习过程中,使用别人做好的 Dockerfile,虽可以直接拿来使用,但如果能自给自足,那最好不过了。

通过自建 docker 开发环境过程中,也能让自己学到更多。接下来还会不断完善,最小化满足开发需要。

相关推荐:

TP5中URL访问模式的解析

Nginx配置的详细代码

以上就是自己搭建一个 Laravel 的 Docker的开发环境的方法的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表