docker 封装 alinode

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

内容简介: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。


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

查看所有标签

猜你喜欢:

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

Professional JavaScript for Web Developers

Professional JavaScript for Web Developers

Nicholas C. Zakas / Wrox / 2009-1-14 / USD 49.99

This eagerly anticipated update to the breakout book on JavaScript offers you an in-depth look at the numerous advances to the techniques and technology of the JavaScript language. You'll see why Java......一起来看看 《Professional JavaScript for Web Developers》 这本书的介绍吧!

在线进制转换器
在线进制转换器

各进制数互转换器

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具