通过第二篇《使用 Docker 搭建简易的 Java Web 环境 (二)》,了解了如何通过单镜像搭建Docker环境。本文主要学习如何使用“docker-compose”。目标是:搭建Laravel开发环境Laravel安装Laravel让我们写出优雅的代码为网络美工打造的PHP框架学习Laravel,也就是PHP,你得用composer。Composer是PHP的依赖管理工具。它允许您声明您的项目所依赖的代码库,并将它们安装到您的项目中。Composer不是包管理器。是的,它涉及“包”和“库”,但它是在每个项目的基础上进行管理的,安装在项目的某个目录中(例如供应商)。默认情况下它不会全局安装任何东西。所以这只是一个依赖管理。这个想法并不新鲜,Composer深受node的npm和ruby??的bundler的启发。当时PHP下还没有类似的工具。Composer会像这样为您解决问题:a)您有一个项目依赖于多个库。b)其中一些库依赖于其他库。c)你声明你所依赖的。d)Composer将确定需要安装哪些版本的包,并安装它们(将它们下载到您的项目中)。参考:http://docs.phpcomposer.com/00-intro.htmlcomposer1。使用php命令安装php-r"copy('https://getcomposer.org/installer','composer-setup.php');"php-r"if(hash_file('SHA384','composer-setup.php')==='544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061'){echo'Installerverified';}else{echo'Installercorrupt';unlink('composer-setup.php');}echoPHP_EOL;"phpcomposer-setup.phpphp-r"unlink('composer-setup.php');"更多查看:https://getcomposer.org/download/2。使用Packagist/Composer中国的全镜像加速修改composer的全局配置文件(推荐方法)composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com查看更多:https://pkg.phpcomposer.com/3.ParallelcomposerinstallcomposerGlobal如果有帮助,需要hirak/prestissimo下载!!!通过Laravel安装工具创建Laravel项目:composerglobalrequire"laravel/installer"然后使用laravelnew命令安装Laravel项目,如:laravelnewblog也可以通过composer创建:composercreate-project--prefer-distlaravel/laravelblog更多查看:https://d.laravel-china.org/docs/5.4/installation搭建php+apache镜像1.选择DaoCloud提供的PHP镜像作为项目的基础镜像FROMdaocloud.io/php:7.1.8-apache2.替换163来源:#更新apt-get来源以使用163来源RUNmv/etc/apt/sources.list/etc/apt/sources.list.bak&&\echo"debhttp://mirrors.163.com/debian/jessiemainnon-freecontrib">/etc/apt/sources.list&&\echo"debhttp://mirrors.163.com/debian/jessie-proposed-updatesmainnon-freecontrib">>/etc/apt/sources.list&&\echo"deb-srchttp://mirrors.163.com/debian/jessiemainnon-freecontrib">>/etc/apt/sources.list&&\echo"deb-srchttp://mirrors.163.com/debian/jessie-proposed-updatesmainnon-freecontrib">>/etc/apt/sources.list3。通过安装脚本安装Laravel应用所需的PHP依赖。#APT自动安装PHP相关的依赖包。如果需要其他依赖包,添加RUNapt-getupdate\&&apt-getinstall-y\libmcrypt-dev\libz-dev\git\wget\libpcre3-dev\#官方PHP镜像内置命令,安装PHP依赖&&docker-php-ext-install\mcrypt\mbstring\pdo_mysql\zip\#使用包管理器后安排清理可以显着减小镜像大小&&apt-getclean\&&apt-getautoclean\&&rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*\#安装Composer,这是PHP用来管理依赖的工具&&curl-sShttps://getcomposer.org/installer\|php----install-dir=/usr/local/bin--filename=composer\#国内镜像加速&&composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com&&composerglobalrequirehirak/prestissimo4.创建Laravel目录结构:#启用URL重写模块#配置默认放置App的目录RUNa2enmodrewrite\&&mkdir-p/app\&&rm-fr/var/www/html\&&ln-s/app/p公共/var/www/htmlWORKDIR/app5.加载composer依赖包#预加载Composer包依赖,优化Docker构建镜像速度COPY./composer.json/app/COPY./composer.lock/app/RUNcomposerinstall--no-autoloader--no-scripts最后,整个Dockerfile如下:FROMdaocloud.io/php:7.1.8-apache#Updateapt-getsourcetouse163sourceRUNmv/etc/apt/sources.list/etc/apt/sources.list.bak&&\echo"debhttp://mirrors.163.com/debian/jessiemainnon-freecontrib">/etc/apt/sources.list&&\echo"debhttp://mirrors.163.com/debian/jessie-proposed-updatesmainnon-freecontrib">>/etc/apt/sources.list&&\echo"deb-srchttp://mirrors.163.com/debian/jessiemainnon-freecontrib">>/etc/apt/sources.list&&\echo"deb-srchttp://mirrors.163.com/debian/jessie-proposed-updatesmainnon-freecontrib">>/etc/apt/sources.list#APT自动安装PHP相关的依赖包。如果需要其他依赖包,添加RUNapt-getupdate\&&apt-getinstall-y\libmcrypt-dev\libz-dev\git\wget\libpcre3-dev\#官方PHP镜像内置命令,安装PHP依赖&&docker-php-ext-install\mcrypt\mbstring\pdo_mysql\zip\#使用包管理器后安排清理可以显着减小体积图片&&apt-getclean\&&apt-getautoclean\&&rm-rf/var/lib/apt/lists/*/tmp/*/var/tmp/*\#安装Composer,PHP用来管理依赖工具&&curl-sShttps://getcomposer.org/installer\|php----install-dir=/usr/local/bin--filename=composer\#国内镜像加速&&composerconfig-grepo.packagistcomposerhttps://packagist.phpcomposer.com\&&composerglobalrequirehirak/prestissimo#开启URL重写模块#配置默认放置App的目录RUNa2enmodrewrite\&&mkdir-p/app\&&rm-fr/var/www/html\&&ln-s/app/public/var/www/htmlWORKDIR/app#预加载Composer包依赖项以优化Docker构建映像的速度COPY./composer.json/app/COPY./composer.lock/app/RUNcomposerinstall--no-autoloader--no-scripts#将代码复制到App目录COPY./app#执行Composerautoload及相关脚本#修改目录权限RUNcomposerinstall\&&chown-Rwww-data:www-data/app\&&chmod-R0777/app/storage如果按照上一篇的写法,修改.env使数据库指向上篇文章写的MySQL容器,然后生成镜像,最后创建容器并运行,但这不是本文的目的。本文的目标是使用“dockercomposer”来组合多个镜像并配置Laravel环境Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,您可以使用Compose文件来配置应用程序的服务。然后,使用一个命令,您可以根据您的配置创建并启动所有服务。所以下一步需要编写“docker-compose.yml”文件“docker-compose.yml”文件直接看代码,通俗易懂version:'3'services:app:build:。重新启动:始终依赖于:-mysql端口:-“8000:80”网络:-appmysql:图像:daocloud.io/mysql:最新卷:-db_data:/var/lib/mysql重新启动:始终环境:MYSQL_ROOT_PASSWORD:somewordpressMYSQL_DATABASE:homesteadMYSQL_USER:homesteadMYSQL_PASSWORD:secretports:-80602:3networks:-appnetworks:app:volumes:db_data:执行构建命令:docker-composeup-d执行结果如下:在浏览器中输入:http://localhost:8000,运行如下:总结还有一点尾巴要给大家查一下:MySQL容器创建好了,但是怎么和Laravel项目结合起来呢?注:由于博客项目是通过命令laravelnew创建的,composer依赖包已经下载回来,因为大家本地环境和docker环境不一致,所以我删除了整个vendor文件夹,这个可以理解,因为我们和别人合作的时候,不会有“docker-Compose.yml”文件的写法,请听下一章附:使用MySQL镜像启动MySQL实例非常简单:dockerrun-d-p3306:3306-eMYSQL_ROOT_PASSWORD=000000-eMYSQL_DATABASE=yemeishu_databasedaocloud.io/mysql:latest下面我们进入容器查看是否创建了数据库:yemeishu_database,root密码是否设置为:000000如果使用数据库客户端,也可以看到创建的数据库:yemeishu_database谢谢看到
