docker 封装 alinode

栏目: 服务器 · 发布时间: 5年前

内容简介:alinode 是之前是收费的,貌似今年年初的时候完全免费,我也第一时间接入了使用,目前为止感觉不错。由于项目 docker 部署了,所以需要自己折腾一套稳定,可控的 docker 镜像。

alinode 是 Node.js 性能平台 的前身,向 node 应用提供 性能监控、安全提醒、故障排查、性能优化 等服务的整体性解决方案。

之前是收费的,貌似今年年初的时候完全免费,我也第一时间接入了使用,目前为止感觉不错。

由于项目 docker 部署了,所以需要自己折腾一套稳定,可控的 docker 镜像。

可能你会说官网不是有么,在阿里云容器镜像服务中。

docker pull registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode 即可。

但我测试后发现,他是个黑盒,没有 dockerfile,更新也不及时,官网文档非常简陋,而且镜像其大无比,目前最新版镜像有 737MB。

所以最终我打算自己封装一套。

封装镜像

查看官网版本后,发现他是基于 debian:8 封装的。

那就好办了,为了稳定性,我也使用 debian:8 但我用的是 debian:8-slim,这个版本删除一些通常在容器内不需要的额外文件,如手册页和文档等。

如果你不放心,那使用 debian:8 即可。

目前版本 debian:8 是 127MB,debian:8-slim 是 79.2MB。

然后通过 tnvm 安装 alindoe,然后安装 yarn(如果你需要的话),最后安装 pm2 @alicloud/agenthub 然后做一些初始化脚本。

完整 Dockerfile 如下:

FROM debian:8-slim

# 只维护一套  shell  环境
RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# 安装 wget 以及 ssl 支持
RUN echo -e "\
deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib\n\
deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib\n\
deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib\n\
deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib\n\
" > /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates wget \
&& rm -rf /var/lib/apt/lists/*;

ENV HOME /root

# Install alinode v3.11.7 (node v8.11.4)
ENV ALINODE_VERSION 3.11.7
ENV TNVM_DIR /root/.tnvm

# 下载 tnvm
RUN wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash

# 安装 指定版本 alinode,安装 yarn pm2 agenthub
RUN source $HOME/.bashrc \
&& tnvm install "alinode-v$ALINODE_VERSION" \
&& tnvm use "alinode-v$ALINODE_VERSION" \
&& npm set registry https://registry.npm.taobao.org \
&& npm i -g yarn \
&& yarn global add pm2 @alicloud/agenthub

# 添加 node 到环境变量
ENV NODE_PATH $TNVM_DIR/versions/alinode/v$ALINODE_VERSION/lib/node_modules
ENV PATH      $TNVM_DIR/versions/alinode/v$ALINODE_VERSION/bin:$PATH

# 工作目录
ENV APP_DIR /app
WORKDIR /app

# alinode 默认配置
COPY default.config.js $HOME
COPY docker-entrypoint.sh /usr/local/bin/

# 初始化脚本
ENTRYPOINT ["docker-entrypoint.sh"]

# 初始化环境变量
ENV NODE_LOG_DIR /tmp
ENV ENABLE_NODE_LOG YES
ENV ALINODE_CONFIG alinode.config.json
ENV NODE_ENV production

# 默认启动命令
CMD ["pm2-runtime", "start", "ecosystem.config.js"]

这些不是我凭空写的,是参照了老的 alinode 镜像 dockerfile 改造的。

https://github.com/aliyun-node/alinode-docker

这份配置非常老,一年前更新,然后就没人管了。

所以我基于这份配置,结合最新镜像环境,自己重新搭了一个。

目前测试还算稳定,功能都正常,我会持续跟踪测试,有问题会更新博客的。

完整配置查看 GitHub https://github.com/toomeefed/docker-alinode

自己封装的意义

我很不喜欢没有 dockerfile 的镜像,那基本就是个黑盒,很多东西都不可控。

自己封装,不仅知道具体流程,还能自定义环境,也更有利于版本控制,多环境控制等。

不过刚开始使用 docker 资历尚浅,可能有很多不足,不过流程理清楚,各位自己封装也简单。

小结

其实只是做了个默认配置和自动启动 agenthub 的处理,方便我们像使用普通 node 镜像一样使用 alinode。

而且我在封装时简单读了下 agenthub 源码,发现如果仅使用监控,而不用性能数据抓取功能的话,完全可以不用 alinode,他能兼容 nodejs。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

iOS Web应用开发

iOS Web应用开发

皮基 (Andrea Picchi) / 罗晴明 / 人民邮电出版社 / 2013-8-1 / CNY 79.00

本书介绍了如何使用Web标准技术来为iPhone和iPad制作Web应用。书中利用最前沿的Web和移动技术,演示了如何使用HTML5来完成繁重的基础工作,如何使用CSS3来制作外观,以及如何使用JavaScript来为移动网站或Web应用添加程序逻辑。 通过阅读本书,读者可以掌握面向移动的项目的开发流程。作者逐章递进,引导读者了解iOS设计与开发的各个步骤。读者可以学习到如下知识: 设......一起来看看 《iOS Web应用开发》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

随机密码生成器
随机密码生成器

多种字符组合密码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具