内容简介:好久没写东西,今天说一说怎么自建一个 Laravel 运行的 Docker 环境。市面上最出名的莫过于「laradock」既然是「自建」,那我们可以参考这个,最小化满足 Laravel 运行的需要。
好久没写东西,今天说一说怎么自建一个 Laravel 运行的 Docker 环境。
市面上最出名的莫过于「laradock」 github.com/laradock/la…
Docker PHP development environment. 使用参考:laradock.io
既然是「自建」,那我们可以参考这个,最小化满足 Laravel 运行的需要。
下面是我罗列出的基本条件:
- 软件:PHP 7.2、Nginx、 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-alpine MAINTAINER coding01 <yemeishu@126.com> RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN 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 prestissimo RUN composer global require "hirak/prestissimo" # install laravel envoy RUN composer global require "laravel/envoy" #install laravel installer RUN composer global require "laravel/installer" RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories RUN apk update && apk add -u nodejs libpng-dev python ENV PATH /root/.yarn/bin:$PATH RUN 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.org WORKDIR /var/www 复制代码
其中安装 alpine
系统插件,我们使用 mirrors.aliyun.com
阿里云镜像。
php:7.2-fpm-alpine
具体使用,可以参考: dashboard.daocloud.io/packages/01…
nginx
我们使用 nginx
,主要是将网站的配置文件载入 nginx
中。
FROM daocloud.io/nginx:1.13-alpine MAINTAINER coding01 <yemeishu@126.com> ADD vhost.conf /etc/nginx/conf.d/default.conf WORKDIR /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 yes volumes: 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 国内镜像服务。
值得推荐使用
参考: laravel-china.org/topics/4484…
使用 yarn
或者 cnpm
安装插件:
生成 Laravel key secret
:
cp .env.example .env php artisan key:generate Application key [base64:4A7VK6MEX7FakPLDSLji97kz/nyWUAWhW4wYn3gefsY=] set successfully. 复制代码
运行下看看效果吧:
我们接下来看看数据库连接吧,修改 .env
:
DB_CONNECTION=mysql DB_HOST=database DB_PORT=3306 DB_DATABASE=homestead DB_USERNAME=homestead DB_PASSWORD=secret 复制代码
我们使用 php artisan make:auth
来生成布局、注册和登录视图以及所有的认证接口的路由。同时它还会生成 HomeController
来处理应用的登录请求。使用 php artisan migrate
来载入数据。
我们看看数据表:
至此,说明我们连接 MySQL
数据库 OK.
总结
在学习过程中,使用别人做好的 Dockerfile,虽可以直接拿来使用,但如果能自给自足,那最好不过了。
通过自建 docker 开发环境过程中,也能让自己学到更多。接下来还会不断完善,最小化满足开发需要。
代码已放在 github
上,欢迎参考和提出 issue
:
最后也可以看之前对 「Laradock」的使用文章:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 分离Webpack开发环境与生产环境的配置
- 重构之路:webpack区分生产环境和开发环境
- iOS工程中开发环境和发布环境的切换
- webpack4系列教程(九):开发环境和生产环境
- 配置lisp开发环境
- 1 - 搭建开发环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
PHP for the World Wide Web, Second Edition (Visual QuickStart Gu
Larry Ullman / Peachpit Press / 2004-02-02 / USD 29.99
So you know HTML, even JavaScript, but the idea of learning an actual programming language like PHP terrifies you? Well, stop quaking and get going with this easy task-based guide! Aimed at beginning ......一起来看看 《PHP for the World Wide Web, Second Edition (Visual QuickStart Gu》 这本书的介绍吧!