内容简介:好久没写东西,今天说一说怎么自建一个 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 - 搭建开发环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
淘宝、天猫电商运营百科全书
刘涛 / 电子工业出版社 / 2016-7 / 59.00元
有人说淘宝、天猫上90%的卖家不赚钱,我认为说得有点大了。因为如果说大家都不赚钱或者在亏钱,为什么去年在做店铺的卖家,今年还在继续?那些不赚钱的卖家,多数是没意识到市场的变化,还在用原来的套路运营店铺。市场在变,但卖家的思路却没有转变,不赚钱也在情理之中,因为淘宝、天猫的玩法变了。做店铺就是好比一场“打怪”升级的游戏,每次的升级都需要强大的装备与攻略。优胜劣汰,能活下去并且能赚钱的卖家,都是在不停......一起来看看 《淘宝、天猫电商运营百科全书》 这本书的介绍吧!