摘要:好久没写东西,今天说一说怎么自建一个运行的环境。注该镜像是由社区联合又拍云与优帆远扬共同合作推出的公益项目,旨在为广大用户提供稳定和高速的国内镜像服务。通过自建开发环境过程中,也能让自己学到更多。接下来还会不断完善,最小化满足开发需要。
好久没写东西,今天说一说怎么自建一个 Laravel 运行的 Docker 环境。
市面上最出名的莫过于「laradock」https://github.com/laradock/laradock
Docker PHP development environment.
使用参考:http://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 coding01RUN 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 具体使用,可以参考:https://dashboard.daocloud.io/packages/019c8dce-ec80-4468-bddc-254fc62ef5c7
nginx我们使用 nginx,主要是将网站的配置文件载入 nginx 中。
FROM daocloud.io/nginx:1.13-alpine MAINTAINER coding01ADD 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/wwwbuild
在 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 .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:
https://github.com/fanly/laraveldocker
最后也可以看之前对 「Laradock」的使用文章:
通过 Laradock 学 Docker —— 配置篇
通过 Laradock 学 Docker-HTTPS
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27373.html
摘要:好久没写东西,今天说一说怎么自建一个运行的环境。注该镜像是由社区联合又拍云与优帆远扬共同合作推出的公益项目,旨在为广大用户提供稳定和高速的国内镜像服务。通过自建开发环境过程中,也能让自己学到更多。接下来还会不断完善,最小化满足开发需要。 showImg(https://segmentfault.com/img/remote/1460000015722901); 好久没写东西,今天说一说...
摘要:本文就介绍如何使用搭建本地环境。讲座介绍是现在火热的一个容器技术,作为开发人员有必要掌握它的使用,无论你是用来搭建本地环境,还是部署应用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟...
摘要:本文就介绍如何使用搭建本地环境。讲座介绍是现在火热的一个容器技术,作为开发人员有必要掌握它的使用,无论你是用来搭建本地环境,还是部署应用。 (原文地址:https://blog.tanteng.me/2017/...) Laravel 官方提供 Homestead 和 Valet 作为本地开发环境,Homestead 是一个官方预封装的 Vagrant Box,也就是一个虚拟机,但是跟...
摘要:基于快速搭建服务根据自定义配置文件快速搭建环境。目录此项目能做什么地址视频教程包含软件项目目录结构快速运行运行服务运行项目运行前端服务此项目能做什么搭建开发生产环境。搭建开发生产环境。 基于Docker快速搭建Web服务 根据自定义配置文件快速搭建Web环境。 目录 此项目能做什么 GItHub地址、视频教程 包含软件 项目目录结构 快速运行KFKDock 运行PHP服务 运行L...
阅读 2785·2021-09-01 10:30
阅读 1682·2019-08-30 15:52
阅读 966·2019-08-29 18:40
阅读 1117·2019-08-28 18:30
阅读 2394·2019-08-23 17:19
阅读 1326·2019-08-23 16:25
阅读 2700·2019-08-23 16:18
阅读 2977·2019-08-23 13:53