🦄 2024 独立开发者训练营,一起创业!查看介绍 / 立即报名(剩余11个优惠名额) →

博客

在 Docker 本地开发环境上极快地运行 Drupal

这个方法只在 macOS 上测试过,抱歉啊 :)

在本地,我们可以使用 Docker for Windows 或者 Docker for Mac 作为应用的开发环境。不过如果你打算使用 Docker 的数据卷存储应用的代码,特别是应用的文件比较多,比如 Drupal ,在运行它的时候你会觉得特别慢。这是因为 Docker for Windows 与 Docker for Mac 都使用了本地化的虚拟技术,这是为了给我们提供一个更顺流的体验,但是数据卷的性能是个暂时没能解决的问题。我找到了一个解决方法,就是使用 Unison 同步文件,暂时只在 macOS 上测试过。

安装 Unison 与必备

在 macOS 上安装了 Homebrew 以后,可以很容易用它安装 Unison 。另外你还需要让 Unison 可以监视文件的变化,当有变化时就去执行同步的动作,这些再安装一下 unison-fsmonitor 。

# 安装 unison
brew install unison

# 安装 unox 的依赖
pip install MacFSEvents

# unox 是在 macOS 上用的 unison-fsmonitor 脚本
curl -o /usr/local/bin/unison-fsmonitor -L https://raw.githubusercontent.com/hnsl/unox/master/unox.py
chmod +x /usr/local/bin/unison-fsmonitor

学习路径

对不住大伙,课程的学习路径与顺序一直没整好。暂时弄了个 在线思维导图 ,可以对课程的结构有个大概的了解。还有一个学习路径仓库 ,里面有具体的课程列表,注册一个 github 帐号,然后 Star 一下这个仓库,这样更新的时候会有提醒。您先用这两个东西作为参考来学习。

path

path-repo

阿里云:专有网络 VPC

在创建阿里云服务之前,先去创建一个网络,然后在这个自己独有的网络上添加需要的阿里云产品,这就是阿里云的 VPC (Virtual Private Cloud),直译就是虚拟私有云,产品的中文名是 “专有网络” 。

创建阿里云产品的时候可以选择自己的专有网络,也可以是经典网络。如果选择经典网络,你的产品跟同一区域的其他人的产品会在同一个网络上。如果使用自己的专有网络,你的服务跟其他人购买的阿里云服务是完全隔离的,这样会更安全一些。而且你也可以更好的控制自己的专有网络,比如使用交换机划分不同的网段,配置路由等等。

创建一个使用专有网络的 ECS 云服务器,流程大概是这样的(视频课程制作中 ... ):

  1. 创建一个专有网络
  2. 在专有网络下添加一个交换机
  3. 创建云服务器,选择所属的专有网络与交换机

如果你的云服务器要面向互联网提供服务,你还需要一个公网的 IP 地址,这样你还需要:

  1. 申请弹性公网 IP
  2. 把申请的公网 IP 绑定到指定的云服务器上

Docker Swarm:创建服务器集群

Docker Swarm 是创建服务器集群用的工具。把一堆服务器绑到一块儿用,让它们看起来像是一台服务器,通过统一的接口在这些服务器上运行应用。

集群里的服务器之间相互知道彼此,它们也知道哪些服务器上运行了什么样的服务,如果访问的服务在服务器上不存在,它会把访问转移到集群里的正确的服务器上去处理。一个服务可以用多个容器来支持,这些容器运行在集群里的不同的服务器上,请求可以均衡的分布给这些容器。当有服务器挂掉以后,在它上面运行的服务会被转移到其它的服务器上运行。

Docker Swarm 只需要几行命令就可以为应用创建一个强大的集群,为你的应用提供高可用的服务。宁皓网的 《 Docker:集群 》介绍了使用 Docker Swarm 创建集群服务器的方法。

模拟集群环境

如果你已经有了几台服务器,安装 Docker 以后就可以去创建一个服务器集群了,如果你想在本地测试 Docker Swarm 的功能,可以模拟一个集群环境,也就是在本地创建几台 Linux 系统的虚拟机,安装 Docker ,配置集群。下面介绍使用 Vagrant 创建虚拟机的方法。

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 。

微信好友

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

微信公众号

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

240746680

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

统计

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

社会化网络

关于

微信订阅号

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