Featured image of post 定制elasticsearch镜像

定制elasticsearch镜像

定制elasticsearch镜像

项目是部署在支付宝小程序云上面的,只有云托管的功能,只能通过docker部署服务。还是不如自己使用云服务器来得方便,不能直接把es的插件目录和数据目录挂载出来在外部操作。所以要添加插件只能提前定制自己的完整的包含插件的镜像。我之前使用docker也都只是简单的拉取运行,java项目也都是一直使用最开始写的那个dockerfile缝缝补补在使用。所以我对dockerfile其实并不是很了解。这次定制镜像算是又系统的学了下dockerfile。但是在制作过程中还是遇到了很多的问题,特别是用户权限方面的问题。es的启动必须使用elasticsearch这个用户。 最开始使用云托管部署es官方的镜像,如果挂载数据卷的话就一直部署不上,也是因为这个用户权限的问题。就找了支付宝官方人员的援助,当时可能是快21:00才去找的人工客服(官网是写的工作时间是到21:00)。经过客服的一些指导还是没能够解决。最后大概在23:00的时候,就添加了官方人员进项目里面,协助部署。官方人员部署的历程也挺抽象的hhhh,当时添加之后,他大概折腾了半个小时,还是都是部署失败。然后就没动静了,等到凌晨2点突然又开始部署了,当然他折腾一个小时的样子还是没成功。就给我发消息说是什么云硬盘的权限问题。

image-20231130155623822

然后第二天官方人员又折腾了一上午加一下午,终于在第二天下午17点的样子给出了解决方案哈哈哈。不得不说确实敬业,凌晨2点都在折腾。快下班才去找人工,我都觉得自己有点🐕了😊,但是当时确实是没注意到他们下班时间。 经过官方人员20+上线测试最终排查出来问题还是出在了用户组上。 image-20231130155657064

在dockerfile中添加两条指令重新构建镜像。

1
2
chown -R elasticsearch:root /usr/share/elasticsearch
chown elasticsearch:root /usr/local/bin/docker-entrypoint.sh

解决了上面的问题以后。就可以开始定制镜像了

image-20231130155204262

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
FROM elasticsearch:7.17.7

ENV LANG C.UTF-8
ENV TZ=Asia/Shanghai

COPY analysis-pinyin-7.17.7 /usr/share/elasticsearch/plugins/py
COPY elasticsearch-analysis-ik-7.17.7 /usr/share/elasticsearch/plugins/ik

RUN chown -R elasticsearch:root /usr/share/elasticsearch
RUN chown elasticsearch:root /usr/local/bin/docker-entrypoint.sh

我的目的就是将我需要的插件打包进镜像里面,当然这些插件都是经过我自己定制化过的。ik分词器实现了连接数据库热更新。 但是这个镜像还是很奇怪,只能在支付宝的云托管里面才能正常启动。我自己服务器上不能正常启动,还是存在权限相关问题。即便是我手动指定了用户组还是不能正常启动。这个问题有空再来解决。先把项目搞完再说!