采用Dockerfile方式构建gateway-worker的Docker镜像

在开始阅读本篇笔记之前,首先需要阅读的人对Docker有一定的了解。如果您还不了解Docker的相关机制和基础操作,可以点击《Docker从入门到实践》进行学习。

本篇笔记的技术点有些多,但波波不会记录很详细,波波把重点放在用Dockerfile方式构建gateway-worker的Docker镜像的过程上。其实之所以构建这个镜像是为了给一个实时聊天的项目提供高可用的架构。废话不多说,首先编写Dockerfile文件。

这里我采用了一个网友提供的PHP7.2版本的镜像,基于这个镜像开始制作。

1、找一个固定放镜像的目录,波波暂时定为“/docker_images/gateway_worker”。

2、“touch Dockerfile”.

3、Dockerfile内容如下:

  1. FROM kolyadin/php:72
  2. MAINTAINER Horkooo <horkooo@163.com>
  3. RUN sudo apt-get update \
  4.     && sudo apt-get install -y libevent-dev libssl-dev \
  5.     && sudo pecl install event \
  6.     && echo "extension=event.so" > /usr/local/etc/php/conf.d/event.ini
  7. RUN composer require -o workerman/gateway-worker:3.0.15
  8. EXPOSE 2345

4、保存退出后,build镜像。

  1. docker build -t gateway-worker:v3 .

用Dockerfile方式构建gateway-worker的Docker镜像

需要注意的问题:

1、根据需要,Dockerfile在编写的时候需要安装的PHP扩展要提前安装好。如Memcached、Redis等。由于Docker采用的是分层结构,不是说后期不能改动镜像,而是前期不考虑好,后期改动会造成镜像日渐臃肿。尽管不影响使用,最起码在波波看来非常不爽。

2、为了便于后期架构设计与管理,相关该统一的内容一定要统一,比如端口映射、目录映射。我们尽量做到在不修改docker镜像的前提下,达到系统业务的灵活性和扩展性。

3、关于"docker build" requires exactly 1 argument(s).错误的处理。

新手朋友第一次做镜像很容易碰到build错误的问题,出错的时候就开始怀疑是不是Dockerfile写的不对,毕竟程序员多数的失误都是因为标点符号、字母大小写引起的。而上述错误的出现是build命令的最后是一个 · ,这个点很容易被忽略掉。最后的点表示当前指令运行的目录与Dockerfile处于同一层级。如果不在当前目录,我们必须通过-f参数为其指定文件目录。

 

波波
你想把广告放到这里吗?

发表评论

您必须 登录 才能发表留言!