2025 独立开发者训练营:AI Agent!查看介绍 / 立即报名 →

博客

Docker Compose:创建本地开发 PHP 应用的环境

Docker Compose 可以让我们用一个文件来描述应用需要的环境,在上面定义应用需要的各种服务,比如 web,数据库,脚本解释,缓存等等,我们也可以配置服务需要的网络与数据卷。这篇文章会创建一个运行 PHP 应用的环境,代码可以在 github 上找到,参考宁皓网课程《Docker:容器化应用》。

定义了下面这些服务:

  • db:使用 mariadb 作为应用的数据库
  • php:解释 php 脚本,使用 php-fpm
  • web:使用 NGINX 作为应用的 web 服务器
  • console:常用工具
  • redis:缓存
  • phpmyadmin:管理数据库的 web 界面

准备

在本地安装 Docker for Mac 或 Docker for Windows ,然后启动 docker ,再打开你喜爱的文本编辑器与命令行工具。为项目创建一个目录,在根目录下创建一个 docker-compose.yml 文件。

Docker:应用从开发到生产的正确方法

扯淡的文章,主要目的是说服你放弃现有的开发环境,比如这些:WAMP,MAMP,XAMPP,Acquia Dev Desktop ... 无论您是一个人,还是一个团队,考虑一下在开发与生产环境中使用 Docker 。

从前

美好的回忆,但那已经是过去。多年前,打算学 PHP 的时候,搜遍互联网寻找搭建运行 PHP 网站的方法,到七八个网站下载环境需要的不同的部分,安装以后还要考虑怎么配置,把它们拼到一块儿工作,当时对我来说是件很难的事情。后来我发现了 WAMP ,只需要到一个地方下载个东西,然后安装一下就可以拥有一个完整的开发环境,感觉很美好。之后很长一段时间我都是用它在本地设计网站,后来我换了 macOS ,所以又用了一阵子 MAMP 。

历史

选择 WAMP 这样的工具,跟我当时的情况有关。设计的网站主要是企业网站,这些网站做好以后很少修改,网站的运行环境一般是虚拟主机,一般只提供使用 FTP 传输文件的权限。使用 WAMP,也限制了整个开发流程,一般像这样:在本地做好网站,感觉差不多了以后就停止继续设计。然后打包网站文件,导出在本地的数据库。把网站文件包扔到虚拟主机上,在线解压,导入数据库。修改网站的配置文件,让网站可以正常运行。从此网站跟本地之间几乎就没有关系了,出现问题直接在线修改。

Docker:把应用放到容器里

在现实生活中,容器就是用来装东西的东西。把你的应用放到容器里,容器里的环境你可以自由定制,你可以在里面安装配置应用需要的任何东西,然后你可以把这个装载着应用的容器拿到任何地方去运行,这些地方不需要知道容器里面到底有什么,它只需要知道怎么样去运行这个容器就行了。Docker 提供了一系列的工具,让我们把应用放到容器里变得更简单。

镜像与容器

镜像与容器,image and container。基于镜像可以去创建容器,镜像有点像是容器的模板,比如你用 centos 镜像创建一个容器,这个容器里的环境就相当于是一个 centos 系统。镜像里可能预装了一些东西,比如 nginx 镜像包含了 nginx 这个 web 服务器,mongodb 镜像里面已经安装好了 mongodb 数据库。这些镜像会基于某些系统类型的镜像去创建,比如 debian,alpine 等等。

我们自己也可以制作镜像,在一个 Dockerfile 文件里描述你的镜像,一般要基于某个系统类型的镜像,然后描述一下安装什么样的软件,做什么配置,公布哪些端口等等,执行 docker build 命令可以生成这个镜像。你可以把自己制作的镜像发布到公开的或者私有的镜像仓库里。

春游

338A4471

在西安,我们走进一家回族泡馍店。一进门,一个十几岁的小男孩招待我们走到座位上,介绍了一下各种泡馍的区别,一会儿他端着两个碗,里面有两个馍,他看出我不会处理馍馍,在一边指导,让我先去洗手,然后告诉我一分为二,二分为四,中间掰开,掰的越小越好吃。他很讲究,并没有动手,只是用小手指,指着馍馍说。吃完以后,我们走出门,他微笑着招呼道,吃好了吗,我问他多大了,他说十五。温和,可爱。让我想起自己十几岁的时候,在父母的餐馆忙活的样子。

重庆聚会

338A3384-1920

第一次参加 Drupal Camp 聚会,在重庆遇到一群可爱的人,很开心。对重庆的印象极好,地美,人好,辣椒辣。前段时间,收到了 Drupal 重庆社区的冉强军,刘明伟老师的邀请,参加第一届重庆 Drupal Camp 聚会。Drupal 的社区真是厉害,会让你有种到家的感觉,大家都非常的友好,见到自己的同类,传说中的人物,异常兴奋。

我分享了一个自己的小故事,关于自由职业,我与 Drupal,或者一个人的网站。呵呵,我觉得这些题目应该都是可以的。我几乎没有在公开场合说话的经历,上一次应该是二十年前的事吧。我自己拆个电脑都会满头大汗,很早我就发现了,觉得这样挺没出息,不过有时候我也没那么紧张,但是陌生的环境总是让我流汗。我猜也一定会大脑一片空白,不知道自己要说啥,不是一点的欠练。

在本地搭建一个 LEMP 开发环境

在本地快速用虚拟机搭建一个 LEMP 环境

你想在本地开发 PHP 网站应用,学习 PHP 语言,或者学习使用 SQL 语言操作数据库,你需要准备一个开发环境。请放弃 WAMP,MAMP,XAMPP 或者类似的开发环境,没有任何好处。现在唯一推荐使用 Vagrant + Virtualbox 的方法在本地搭建一个 LEMP 开发环境。

LEMP 是运行 PHP 应用的环境,L 是 Linux ,比如 CentOS,Ubuntu 等等。 E 是 NGINX ,它是一款 Web 服务器。 M 表示 Mariadb 或者 MySQL,是数据服务,P 指的就是 PHP 。

服务(草稿)

准备

在 《工具》(http://ninghao.net/blog/3502)这个手册里介绍了工作中常用的一些工具,推荐先看一下,然后练习使用这些工具。

虚拟机

在本地电脑上可以使用 Vagrant + Virtualbox 去创建一台 Linux 系统的虚拟机,我会用 CentOS 系统作演示。下面我们会在这台虚拟机上去学一下命令行的基础,了解文件与目录的权限,然后在上面搭建一个可以运行一般的 PHP 网站应用的 LEMP 环境。

加个微信好友吧 :)

wanghao_8088-weixin

菜鸟的初次旅行:香港 — 曼谷 — 芭提雅 — 格兰岛

338A2195-3

“老婆,我就简单写写旅行的感想就行啊”,“不行,你要多写点,在手机上看要翻啊翻 ...”,“哦,好吧!”

我猜可能是个性原因,起动去做一件事情特别难,不过习惯以后就会进入状态。对于旅行我一直是很保守的,我跟小雪从认识到结婚,从来没有一起真正出去旅行过。小雪可能是被我带坏了,刚认识她的时候,她的 QQ 名是 “带我一起走”,签名是 “我想看满天的繁星” 。我们生活了一段时间以后,她再也没提过 “我想看满天的繁星” ,我想这事儿我应该负点责任。

可能是有了小孩子的原因,让她又有冲动要带着小孩出去走走,长长见识。我也一样,想去创造一些以后可以讲讲的故事,我们决定要出发了,不过去哪里一点谱也没有。小雪的朋友一家也想要出去,她的小孩出生,正好小雪怀孕,很巧,小雪跟她住同一间产房,而且是同一张床。她们都是小雪的大学同学,我们也很早就认识了,平时像大姐一样对待,关系很好。她特别爱玩,会努力寻找各种要出去玩的暗示。临时规划了路线,先到香港,再去曼谷,然后到芭提雅,再去一个小岛。

初三至十五都在外面溜达

跟您请个假哈,我想跟小雪带着小孩从初三到十五在外面溜达溜达行不?不说话就表示同意了啊,谢谢啦,你看票都买好了,先到香港,然后去泰国。这期间您可以正常订阅宁皓网,订阅之后会自动为您开通会员资格。如果发现订阅未生效,别着急哈,等有网络的时候就给您处理一下,这种情况一般都会多补几天。就这些,跟您汇报一下 :)

微信好友

用微信扫描二维码,
加我好友。

微信公众号

用微信扫描二维码,
订阅宁皓网公众号。

240746680

用 QQ 扫描二维码,
加入宁皓网 QQ 群。

统计

15260
分钟
0
你学会了
0%
完成

社会化网络

关于

微信订阅号

扫描微信二维码关注宁皓网,每天进步一点