├── 3 ├── alpine │ └── Dockerfile ├── jessie │ └── Dockerfile └── slim │ └── Dockerfile ├── 4 ├── alpine │ └── Dockerfile ├── jessie │ └── Dockerfile └── slim │ └── Dockerfile ├── 5 ├── alpine │ └── Dockerfile ├── jessie │ └── Dockerfile └── slim │ └── Dockerfile ├── .gitignore ├── README.md ├── build.sh ├── buildall.sh ├── context ├── default.config.js └── start-agenthub.sh ├── docker-compose.yml ├── official ├── 3-alpine.Dockerfile ├── 3-slim.Dockerfile ├── 3.Dockerfile ├── 4-slim.dockerfile ├── 4.dockerfile ├── README.md ├── default.config.js └── start-agenthub.sh └── push.sh /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | -------------------------------------------------------------------------------- /3/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.8 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=3.14.1 \ 5 | NODE_VERSION=8.15.1 \ 6 | ENABLE_NODE_LOG=YES \ 7 | NODE_LOG_DIR=/tmp \ 8 | ALINODE_CONFIG=alinode.config.json \ 9 | NODE_ENV=production \ 10 | HOME=/root \ 11 | APP_DIR=/app 12 | 13 | # 从官网镜像中复制 alinode 包含了 agenthub 无需安装 14 | COPY --from=registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:3-alpine /usr/local /usr/local 15 | 16 | # 添加账号,安装 依赖,运维工具,yarn pm2 17 | RUN addgroup -g 1000 node \ 18 | && adduser -u 1000 -G node -s /bin/sh -D node \ 19 | && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ 20 | && apk add --no-cache libstdc++ ca-certificates curl wget \ 21 | && rm -rf /usr/local/bin/yarn* \ 22 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 23 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 24 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 \ 25 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 26 | && rm -rf /tmp/* 27 | 28 | # 初始化脚本 29 | COPY default.config.js $HOME 30 | COPY start-agenthub.sh / 31 | 32 | # 入口脚本 33 | ENTRYPOINT ["/start-agenthub.sh"] 34 | 35 | # 工作目录 36 | WORKDIR /app 37 | 38 | # 默认启动命令 39 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 40 | -------------------------------------------------------------------------------- /3/jessie/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=3.15.0 \ 5 | NODE_VERSION=8.16.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /3/slim/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie-slim 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=3.15.0 \ 5 | NODE_VERSION=8.16.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y iputils-ping ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /4/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.8 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=4.7.0 \ 5 | NODE_VERSION=10.15.3 \ 6 | ENABLE_NODE_LOG=YES \ 7 | NODE_LOG_DIR=/tmp \ 8 | ALINODE_CONFIG=alinode.config.json \ 9 | NODE_ENV=production \ 10 | HOME=/root \ 11 | APP_DIR=/app 12 | 13 | # 从官网镜像中复制 alinode 包含了 agenthub 无需安装 14 | COPY --from=registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:4-alpine /usr/local /usr/local 15 | 16 | # 添加账号,安装 依赖,运维工具,yarn pm2 17 | RUN addgroup -g 1000 node \ 18 | && adduser -u 1000 -G node -s /bin/sh -D node \ 19 | && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ 20 | && apk add --no-cache libstdc++ ca-certificates curl wget \ 21 | && rm -rf /usr/local/bin/yarn* \ 22 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 23 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 24 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 \ 25 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 26 | && rm -rf /tmp/* 27 | 28 | # 初始化脚本 29 | COPY default.config.js $HOME 30 | COPY start-agenthub.sh / 31 | 32 | # 入口脚本 33 | ENTRYPOINT ["/start-agenthub.sh"] 34 | 35 | # 工作目录 36 | WORKDIR /app 37 | 38 | # 默认启动命令 39 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 40 | -------------------------------------------------------------------------------- /4/jessie/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=4.8.0 \ 5 | NODE_VERSION=10.16.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /4/slim/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie-slim 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=4.8.0 \ 5 | NODE_VERSION=10.16.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y iputils-ping ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /5/alpine/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM alpine:3.9.4 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=5.13.0 \ 5 | NODE_VERSION=12.13.0 \ 6 | ENABLE_NODE_LOG=YES \ 7 | NODE_LOG_DIR=/tmp \ 8 | ALINODE_CONFIG=alinode.config.json \ 9 | NODE_ENV=production \ 10 | HOME=/root \ 11 | APP_DIR=/app 12 | 13 | # 从官网镜像中复制 alinode 包含了 agenthub 无需安装 14 | COPY --from=registry.cn-hangzhou.aliyuncs.com/aliyun-node/alinode:5.13.0-alpine /usr/local /usr/local 15 | 16 | # 添加账号,安装 依赖,运维工具,yarn pm2 17 | RUN addgroup -g 1000 node \ 18 | && adduser -u 1000 -G node -s /bin/sh -D node \ 19 | && sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ 20 | && apk add --no-cache libstdc++ ca-certificates curl wget \ 21 | && rm -rf /usr/local/bin/yarn* \ 22 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 23 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 24 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 \ 25 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 26 | && rm -rf /tmp/* 27 | 28 | # 初始化脚本 29 | COPY default.config.js $HOME 30 | COPY start-agenthub.sh / 31 | 32 | # 入口脚本 33 | ENTRYPOINT ["/start-agenthub.sh"] 34 | 35 | # 工作目录 36 | WORKDIR /app 37 | 38 | # 默认启动命令 39 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 40 | -------------------------------------------------------------------------------- /5/jessie/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=5.13.0 \ 5 | NODE_VERSION=12.13.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /5/slim/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM debian:jessie-slim 2 | 3 | # 环境变量 4 | ENV ALINODE_VERSION=5.13.0 \ 5 | NODE_VERSION=12.13.0 \ 6 | ARCH=x64 \ 7 | ENABLE_NODE_LOG=YES \ 8 | NODE_LOG_DIR=/tmp \ 9 | ALINODE_CONFIG=alinode.config.json \ 10 | NODE_ENV=production \ 11 | HOME=/root \ 12 | APP_DIR=/app 13 | 14 | # 添加用户和组 15 | RUN groupadd --gid 1000 node \ 16 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 17 | 18 | # 安装 运维工具,alinode,yarn pm2 agenthub 19 | RUN set -x \ 20 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 21 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 22 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 23 | && apt-get update && apt-get install -y iputils-ping ca-certificates curl wget --no-install-recommends \ 24 | && rm -rf /var/lib/apt/lists/* \ 25 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 26 | && curl -fsSLO --compressed "https://npm.taobao.org/mirrors/alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 27 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 28 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 29 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 30 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 31 | && ENABLE_NODE_LOG=NO npm set registry https://registry.npm.taobao.org \ 32 | && ENABLE_NODE_LOG=NO npm set disturl https://npm.taobao.org/dist \ 33 | && ENABLE_NODE_LOG=NO npm i -g yarn pm2 @alicloud/agenthub \ 34 | && ENABLE_NODE_LOG=NO npm cache clean --force \ 35 | && rm -rf /tmp/* 36 | 37 | # 初始化脚本 38 | COPY default.config.js $HOME 39 | COPY start-agenthub.sh / 40 | 41 | # 入口脚本 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | 44 | # 工作目录 45 | WORKDIR /app 46 | 47 | # 默认启动命令 48 | CMD ["pm2-runtime", "start", "ecosystem.config.js"] 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # docker-alinode 2 | 3 | Node.js 性能平台 - Node.js Performance Platform 4 | 5 | > 集成 alinode + yarn + pm2 + agenthub 6 | > 自动启动 agenthub 服务,让你可以像 pm2 镜像一样方便使用。 7 | 8 | [GitHub](https://github.com/toomeefed/docker-alinode) 9 | | 10 | [Docker Store](https://store.docker.com/r/toomee/alinode) 11 | | 12 | [《Node.js性能平台运行时版本和官方对应列表》](https://help.aliyun.com/knowledge_detail/60811.html) 13 | | 14 | [《官网 Dockerfile 模板》](https://github.com/toomeefed/docker-alinode/tree/master/official) 15 | 16 | ## 标签对应关系 17 | 18 | 镜像 | 基础镜像 | AliNode | Node | Dockerfile 19 | :-- | :-- | :-- | :-- | :-- 20 | toomee/alinode:3 | debian:jessie | v3.15.0 | v8.16.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/jessie/Dockerfile) 21 | toomee/alinode:3-slim | debian:jessie-slim | v3.15.0 | v8.16.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/slim/Dockerfile) 22 | toomee/alinode:3-alpine | alpine:3.8 | v3.14.1 | v8.15.1 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/alpine/Dockerfile) 23 | toomee/alinode:4 | debian:jessie | v4.8.0 | v10.16.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/4/jessie/Dockerfile) 24 | toomee/alinode:4-slim | debian:jessie-slim | v4.8.0 | v10.16.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/4/slim/Dockerfile) 25 | toomee/alinode:4-alpine | alpine:3.8 | v4.7.0 | v10.15.3 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/4/alpine/Dockerfile) 26 | toomee/alinode:5 | debian:jessie | v5.13.0 | v12.13.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/5/jessie/Dockerfile) 27 | toomee/alinode:5-slim | debian:jessie-slim | v5.13.0 | v12.13.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/5/slim/Dockerfile) 28 | toomee/alinode:5-alpine | alpine:3.9 | v5.13.0 | v12.13.0 | [Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/5/alpine/Dockerfile) 29 | 30 | 31 | ### 所有镜像 32 | 33 | ```sh 34 | $ docker images toomee/alinode 35 | REPOSITORY TAG IMAGE ID CREATED SIZE 36 | toomee/alinode 5-alpine 0cebf1ac010e 1 minutes ago 115MB 37 | toomee/alinode 5.13-alpine 0cebf1ac010e 1 minutes ago 115MB 38 | toomee/alinode 5.13.0-alpine 0cebf1ac010e 1 minutes ago 115MB 39 | toomee/alinode 5-slim 4e8ca2cd1b31 2 minutes ago 228MB 40 | toomee/alinode 5.13-slim 4e8ca2cd1b31 2 minutes ago 228MB 41 | toomee/alinode 5.13.0-slim 4e8ca2cd1b31 2 minutes ago 228MB 42 | toomee/alinode 5 20724a6d2b7e 3 minutes ago 276MB 43 | toomee/alinode 5.13 20724a6d2b7e 3 minutes ago 276MB 44 | toomee/alinode 5.13.0 20724a6d2b7e 3 minutes ago 276MB 45 | toomee/alinode 4-alpine b60e826e8854 7 minutes ago 106MB 46 | toomee/alinode 4.7-alpine b60e826e8854 7 minutes ago 106MB 47 | toomee/alinode 4.7.0-alpine b60e826e8854 7 minutes ago 106MB 48 | toomee/alinode 4-slim 403c69f5e02b 8 minutes ago 225MB 49 | toomee/alinode 4.8-slim 403c69f5e02b 8 minutes ago 225MB 50 | toomee/alinode 4.8.0-slim 403c69f5e02b 8 minutes ago 225MB 51 | toomee/alinode 4 dd8497da944f 9 minutes ago 272MB 52 | toomee/alinode 4.8 dd8497da944f 9 minutes ago 272MB 53 | toomee/alinode 4.8.0 dd8497da944f 9 minutes ago 272MB 54 | toomee/alinode 3-alpine 8f1d88e5fdcf 10 minutes ago 101MB 55 | toomee/alinode 3.14-alpine 8f1d88e5fdcf 10 minutes ago 101MB 56 | toomee/alinode 3.14.1-alpine 8f1d88e5fdcf 10 minutes ago 101MB 57 | toomee/alinode 3-slim cdcc791e5b8b 11 minutes ago 216MB 58 | toomee/alinode 3.15-slim cdcc791e5b8b 11 minutes ago 216MB 59 | toomee/alinode 3.15.0-slim cdcc791e5b8b 11 minutes ago 216MB 60 | toomee/alinode 3 3a04e8b4b73f 12 minutes ago 264MB 61 | toomee/alinode 3.15 3a04e8b4b73f 12 minutes ago 264MB 62 | toomee/alinode 3.15.0 3a04e8b4b73f 12 minutes ago 264MB 63 | ``` 64 | 65 | ## 使用说明 66 | 67 | 假设你的项目是如下结构 68 | 69 | ``` 70 | . 71 | ├── src 72 | │ └── app.js 73 | ├── package.json 74 | ├── ecosystem.config.js 75 | └── README.md 76 | ``` 77 | 78 | ### 拉取镜像 79 | 80 | ```sh 81 | $ docker pull toomee/alinode:5 82 | ``` 83 | 84 | ### 1. 直接启动 85 | 86 | 到当前项目目录下执行如下命令: 87 | 88 | ```sh 89 | $ docker run -d \ 90 | -p 8000:8000 \ 91 | -v $PWD:/app \ 92 | -e "APP_ID=应用ID" \ 93 | -e "APP_SECRET=应用密钥" \ 94 | -h my-alinode \ 95 | --name my-alinode \ 96 | toomee/alinode:5 97 | ``` 98 | 99 | ### 2. 基于配置启动 100 | 101 | 项目跟目录创建 `alinode.config.json` 内容如下: 102 | 103 | > [Agenthub 文档](https://github.com/aliyun-node/agenthub) 104 | 105 | ```json 106 | { 107 | "appid": "", 108 | "secret": "", 109 | "logdir": "/tmp/", 110 | "error_log": [ 111 | "", 112 | "您的应用在业务层面产生的异常日志的路径", 113 | "例如:/root/.logs/error.#YYYY#-#MM#-#DD#-#HH#.log", 114 | "可选" 115 | ], 116 | "packages": [ 117 | "", 118 | "可以输入多个package.json的路径", 119 | "可选" 120 | ] 121 | } 122 | ``` 123 | 124 | 然后启动容器: 125 | 126 | ```sh 127 | $ docker run -d \ 128 | -p 8000:8000 \ 129 | -v $PWD:/app \ 130 | -h my-alinode \ 131 | --name my-alinode \ 132 | toomee/alinode:5 133 | ``` 134 | 135 | ### 常用命令 136 | 137 | 命令 | 描述 138 | :-- | :-- 139 | `$ docker exec my-alinode pm2 monit` | 监控每个进程 CPU 使用情况 140 | `$ docker exec my-alinode pm2 list` | 列出进程 141 | `$ docker exec my-alinode pm2 logs` | 查看日志 142 | `$ docker exec my-alinode pm2 reload all` | 无缝重启所有进程 143 | 144 | **PS: 具体使用说明看 PM2 和 alinode 文档** 145 | 146 | 147 | ## 高级应用 148 | 149 | 多环境基于配置部署方案: 150 | 151 | 添加 `alinode.config.json`, `alinode.config.pre.json` 到根目录。 152 | 153 | 启动 pre 环境容器: 154 | 155 | ```sh 156 | $ docker run -d \ 157 | -p 8000:8000 \ 158 | -v $PWD:/app \ 159 | -e "ALINODE_CONFIG=alinode.config.pre.json" \ 160 | -h my-alinode \ 161 | --name my-alinode \ 162 | toomee/alinode:5 163 | ``` 164 | 165 | 启动 正式 环境容器: 166 | 167 | ```sh 168 | $ docker run -d \ 169 | -p 8000:8000 \ 170 | -v $PWD:/app \ 171 | -h my-alinode \ 172 | --name my-alinode \ 173 | toomee/alinode:5 174 | ``` 175 | 176 | ## docker-compose 177 | 178 | 也可以使用 docker-compose.yml 启动。 179 | 180 | ```yml 181 | web: 182 | image: toomee/alinode:5 183 | restart: always 184 | hostname: my-alinode 185 | container_name: my-alinode 186 | environment: 187 | APP_ID: 应用ID 188 | APP_SECRET: 应用密钥 189 | # 或者使用自定义环境配置 190 | # ALINODE_CONFIG: alinode.config.pre.json 191 | ports: 192 | - 8000:8000 193 | volumes: 194 | - $PWD:/app 195 | ``` 196 | 197 | 常用命令 198 | 199 | ```sh 200 | $ docker-compose pull # 更新/拉取镜像 201 | $ docker-compose up -d # 启动 202 | $ docker-compose restart # 重启 203 | $ docker-compose down # 关闭并删除 204 | ``` 205 | 206 | ## 特别说明 207 | 208 | `-h my-alinode` 是容器 hostname 最终会显示在 平台实例列表中。 209 | 如果不写,会显示默认容器名,也就是随机值。 210 | 211 | ## 自定义 212 | 213 | 推荐自定义修改 Dockerfile 然后构建合适自己的镜像。 214 | 由于官网还没开源,所以 Dockerfile 也是未知的,官方镜像就像是黑匣子。 215 | 这个是我研究官网镜像总结出来的,是基于官网镜像直接抽取的,兼容性目前来看没啥问题。 216 | 有问题,欢迎反馈。 217 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # 例子 4 | # sh build.sh 3-alpine 3.13-alpine 3.13.0-alpine 5 | 6 | set -e 7 | 8 | # 输入参数 9 | tag=${1:-3} 10 | 11 | # 版本 12 | version=${tag/-*/} 13 | # 版本标签 14 | tagname=${tag/*-/} 15 | 16 | # 对应目录 17 | dir="$version/$tagname" 18 | 19 | # 如果没标签,默认 jessie 版本 20 | if [ "$version" = "$tagname" ]; then 21 | dir="$version/jessie" 22 | fi 23 | 24 | # 判断目录是否存在 25 | if [ ! -d $dir ]; then 26 | echo "no such tag: $tag" 27 | exit -1 28 | fi 29 | 30 | # 构建镜像 31 | docker build -f $dir/Dockerfile -t toomee/alinode:$tag context 32 | 33 | echo 34 | echo "✨ toomee/alinode:$tag is done!" 35 | echo 36 | 37 | if [ $# -gt 1 ]; then 38 | for ((i=2; i<=$#; i++)); do 39 | echo "Create tag $tag -> ${!i}" 40 | docker tag toomee/alinode:$tag toomee/alinode:${!i} 41 | done 42 | fi 43 | 44 | echo 45 | 46 | if [ "$version" = "$tagname" ]; then 47 | docker images toomee/alinode:$tag* 48 | else 49 | docker images toomee/alinode:$version*-$tagname 50 | fi 51 | 52 | echo 53 | docker run --rm toomee/alinode:$tag sh -c 'echo "alinode v$ALINODE_VERSION" && echo "node $(node -v)" && echo "npm v$(npm -v)" && echo "yarn v$(yarn -v)" && echo "pm2 v$(pm2 -v)"' 54 | echo 55 | -------------------------------------------------------------------------------- /buildall.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # ./build.sh 3 3.15 3.15.0 4 | # ./build.sh 3-slim 3.15-slim 3.15.0-slim 5 | # ./build.sh 3-alpine 3.14-alpine 3.14.1-alpine 6 | 7 | # ./build.sh 4 4.8 4.8.0 8 | # ./build.sh 4-slim 4.8-slim 4.8.0-slim 9 | # ./build.sh 4-alpine 4.7-alpine 4.7.0-alpine 10 | 11 | ./build.sh 5 5.13 5.13.0 12 | ./build.sh 5-slim 5.13-slim 5.13.0-slim 13 | ./build.sh 5-alpine 5.13-alpine 5.13.0-alpine 14 | -------------------------------------------------------------------------------- /context/default.config.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | 3 | const defaults = { 4 | // server: 'wss://agentserver.node.aliyun.com:8080', 5 | heartbeatInterval: 60, 6 | reconnectDelay: 10, 7 | reportInterval: 60, 8 | logdir: '/tmp', 9 | error_log: [], 10 | packages: [], 11 | }; 12 | 13 | let custom = {}; 14 | 15 | // load /app/alinode.config.json 16 | if (fs.existsSync(`${process.env.APP_DIR}/${process.env.ALINODE_CONFIG}`)) { 17 | custom = require(`${process.env.APP_DIR}/${process.env.ALINODE_CONFIG}`); 18 | } 19 | 20 | if (fs.existsSync(`${process.env.APP_DIR}/package.json`)) { 21 | defaults.packages.push(`${process.env.APP_DIR}/package.json`); 22 | } 23 | 24 | const config = Object.assign(defaults, custom); 25 | 26 | config.appid = config.appid || process.env.APP_ID; 27 | config.secret = config.secret || process.env.APP_SECRET; 28 | config.logdir = config.logdir || process.env.NODE_LOG_DIR || '/tmp'; 29 | 30 | if (config.appid && config.secret) { 31 | const runningCfg = `${process.env.HOME}/agenthub-running.json`; 32 | fs.writeFileSync(runningCfg, JSON.stringify(config, null, 2)); 33 | } 34 | -------------------------------------------------------------------------------- /context/start-agenthub.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ENABLE_NODE_LOG=NO node $HOME/default.config.js 4 | 5 | if [ -f $HOME/agenthub-running.json ]; then 6 | ENABLE_NODE_LOG=NO agenthub start $HOME/agenthub-running.json 7 | fi 8 | 9 | exec "$@" 10 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | web: 2 | image: toomee/alinode:3-alpine 3 | restart: always 4 | hostname: my-alinode 5 | container_name: my-alinode 6 | environment: 7 | APP_ID: 应用ID 8 | APP_SECRET: 应用密钥 9 | # 或者使用自定义环境配置 10 | # ALINODE_CONFIG: alinode.config.pre.json 11 | ports: 12 | - 8000:8000 13 | volumes: 14 | - '$PWD:/app' 15 | 16 | # docker-compose pull # 更新/拉取镜像 17 | # docker-compose up -d # 创建并启动 18 | # docker-compose restart # 重启容器 19 | # docker-compose down # 关闭并删除 20 | -------------------------------------------------------------------------------- /official/3-alpine.Dockerfile: -------------------------------------------------------------------------------- 1 | # FROM alpine:3.6 as builder 2 | # 通过源码编译 3 | 4 | FROM alpine:3.6 as prod 5 | 6 | ENV HOME=/root 7 | ENV ALINODE_VERSION=alinode-v3.12.0 8 | ENV ENABLE_NODE_LOG=YES 9 | ENV NODE_LOG_DIR=/tmp 10 | ENV YARN_VERSION=1.5.1 11 | 12 | COPY default.config.js /root 13 | COPY start-agenthub.sh / 14 | 15 | # 复制前一阶段构建好的 alinode 16 | # COPY --from=builder /usr/local /usr/local 17 | 18 | RUN > /etc/apk/repositories \ 19 | && echo "http://mirrors.aliyun.com/alpine/v3.6/main/" >> /etc/apk/repositories \ 20 | && echo "http://mirrors.aliyun.com/alpine/v3.6/community/" >> /etc/apk/repositories \ 21 | && apk update \ 22 | && addgroup -g 1000 node \ 23 | && adduser -u 1000 -G node -s /bin/sh -D node \ 24 | && apk add --no-cache \ 25 | libstdc++ \ 26 | && apk add --no-cache --virtual .build-deps-yarn curl gnupg tar \ 27 | && for key in \ 28 | 6A010C5166006599AA17F08146C2130DFD2497F5 \ 29 | ; do \ 30 | gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys "$key" || \ 31 | gpg --keyserver hkp://ipv4.pool.sks-keyservers.net --recv-keys "$key" || \ 32 | gpg --keyserver hkp://pgp.mit.edu:80 --recv-keys "$key" ; \ 33 | done \ 34 | && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz" \ 35 | && curl -fSLO --compressed "https://yarnpkg.com/downloads/$YARN_VERSION/yarn-v$YARN_VERSION.tar.gz.asc" \ 36 | && gpg --batch --verify yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ 37 | && mkdir -p /opt \ 38 | && tar -xzf yarn-v$YARN_VERSION.tar.gz -C /opt/ \ 39 | && rm yarn-v$YARN_VERSION.tar.gz.asc yarn-v$YARN_VERSION.tar.gz \ 40 | && apk del .build-deps-yarn 41 | 42 | ENTRYPOINT ["/start-agenthub.sh"] 43 | -------------------------------------------------------------------------------- /official/3-slim.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8-slim 2 | 3 | ENV ALINODE_VERSION=3.12.0 4 | ENV ENABLE_NODE_LOG=YES 5 | ENV NODE_LOG_DIR=/tmp 6 | ENV HOME=/root 7 | 8 | RUN curl -SLO "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-x64.tar.gz" \ 9 | && curl -SLO "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 10 | && grep " alinode-v$ALINODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt | sha256sum -c - \ 11 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 12 | && rm "alinode-v$ALINODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt 13 | RUN ENABLE_NODE_LOG=NO npm install -g @alicloud/agenthub 14 | 15 | COPY default.config.js /root 16 | COPY start-agenthub.sh / 17 | 18 | ENTRYPOINT ["/start-agenthub.sh"] 19 | -------------------------------------------------------------------------------- /official/3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 2 | 3 | ENV ALINODE_VERSION=3.12.0 4 | ENV ENABLE_NODE_LOG=YES 5 | ENV NODE_LOG_DIR=/tmp 6 | ENV HOME=/root 7 | 8 | RUN curl -SLO "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-x64.tar.gz" \ 9 | && curl -SLO "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 10 | && grep " alinode-v$ALINODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt | sha256sum -c - \ 11 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-x64.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 12 | && rm "alinode-v$ALINODE_VERSION-linux-x64.tar.gz" SHASUMS256.txt 13 | RUN ENABLE_NODE_LOG=NO npm install -g @alicloud/agenthub --registry=https://registry.npm.taobao.org 14 | 15 | COPY default.config.js /root 16 | COPY start-agenthub.sh / 17 | 18 | ENTRYPOINT ["/start-agenthub.sh"] 19 | -------------------------------------------------------------------------------- /official/4-slim.dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8-slim 2 | 3 | RUN groupadd --gid 1000 node \ 4 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 5 | 6 | ENV ALINODE_VERSION=4.5.0 7 | ENV ARCH=x64 8 | ENV ENABLE_NODE_LOG=YES 9 | ENV NODE_LOG_DIR=/tmp 10 | ENV HOME=/root 11 | 12 | RUN set -x \ 13 | && mv /etc/apt/sources.list /etc/apt/sources.list.backup \ 14 | && echo "deb http://mirrors.aliyun.com/debian jessie main" > /etc/apt/sources.list \ 15 | && echo "deb http://mirrors.aliyun.com/debian-security jessie/updates main" >> /etc/apt/sources.list \ 16 | && echo "deb http://mirrors.aliyun.com/debian jessie-updates main" >> /etc/apt/sources.list \ 17 | && apt-get update && apt-get install -y ca-certificates curl wget $buildDeps --no-install-recommends \ 18 | && rm -rf /var/lib/apt/lists/* \ 19 | && curl -fsSLO --compressed "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-x64.tar.gz" \ 20 | && curl -fsSLO --compressed "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 21 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 22 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 23 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 24 | && apt-get purge -y --auto-remove $buildDeps \ 25 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 26 | && ENABLE_NODE_LOG=NO npm install -g @alicloud/agenthub 27 | 28 | COPY default.config.js /root 29 | COPY start-agenthub.sh / 30 | 31 | ENTRYPOINT ["/start-agenthub.sh"] 32 | -------------------------------------------------------------------------------- /official/4.dockerfile: -------------------------------------------------------------------------------- 1 | FROM node:8 2 | 3 | RUN groupadd --gid 1000 node \ 4 | && useradd --uid 1000 --gid node --shell /bin/bash --create-home node 5 | 6 | ENV ALINODE_VERSION=4.5.0 7 | ENV ARCH=x64 8 | ENV ENABLE_NODE_LOG=YES 9 | ENV NODE_LOG_DIR=/tmp 10 | ENV HOME=/root 11 | 12 | RUN curl -fsSLO --compressed "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" \ 13 | && curl -fsSLO --compressed "http://alinode.aliyun.com/dist/new-alinode/v$ALINODE_VERSION/SHASUMS256.txt" \ 14 | && grep " alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz\$" SHASUMS256.txt | sha256sum -c - \ 15 | && tar -zxvf "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" -C /usr/local --strip-components=1 --no-same-owner \ 16 | && rm "alinode-v$ALINODE_VERSION-linux-$ARCH.tar.gz" SHASUMS256.txt \ 17 | && ln -s /usr/local/bin/node /usr/local/bin/nodejs \ 18 | && ENABLE_NODE_LOG=NO npm install -g @alicloud/agenthub 19 | 20 | COPY default.config.js /root 21 | COPY start-agenthub.sh / 22 | 23 | ENTRYPOINT ["/start-agenthub.sh"] 24 | -------------------------------------------------------------------------------- /official/README.md: -------------------------------------------------------------------------------- 1 | # Official Docker Image for alinode 2 | 3 | > alinode 官网镜像模板 4 | 5 | > **PS: 官网于 2018-11-06 提供了 Dockerfile ,所以可以忽略这个模板。** 6 | 7 | 详细原理请看《[alinode 官方镜像分析并提取 Dockerfile](http://www.52cik.com/2018/10/01/docker-alinode-dockerfile.html)》。 8 | 9 | 从阿里官网镜像中提取的 Dockerfile 模板。 10 | 11 | ## 特别说明 12 | 13 | `3.Dockerfile`, `3-slim.Dockerfile` 是可构建的。 14 | `3-alpine.Dockerfile` 是不可构建的,因为他是多阶段构建 (multi-stage build),前一阶段构建的镜像完全丢弃,所以不能得知具体发生了什么。 15 | 16 | 但可以看我魔改过的版本。 17 | 18 | [3/Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/jessie/Dockerfile) 对应 `3.Dockerfile` 版本。 19 | [3-slim/Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/slim/Dockerfile) 对应 `3-slim.Dockerfile` 版本。 20 | [3-alpine/Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/3/alpine/Dockerfile) 对应 `3-alpine.Dockerfile` 版本。 21 | [4/Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/4/jessie/Dockerfile) 对应 `4.Dockerfile` 版本。 22 | [4-slim/Dockerfile](https://github.com/toomeefed/docker-alinode/blob/master/4/slim/Dockerfile) 对应 `4-slim.Dockerfile` 版本。 23 | 24 | 根据自己的需求魔改吧。 25 | -------------------------------------------------------------------------------- /official/default.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const fs = require('fs'); 4 | 5 | const defaults = { 6 | "server": "wss://agentserver.node.aliyun.com:8080", 7 | "appid": `${process.env.APP_ID}`, 8 | "secret": `${process.env.APP_SECRET}`, 9 | "heartbeatInterval": 60, 10 | "reconnectDelay": 10, 11 | "reportInterval": 60, 12 | "logdir": `${process.env.NODE_LOG_DIR}`, 13 | "error_log": [] 14 | }; 15 | 16 | var custom = {}; 17 | 18 | if (fs.existsSync(`${process.env.HOME}/app-config.json`)) { 19 | custom = require(`${process.env.HOME}/app-config.json`); 20 | } 21 | 22 | if (!custom.appid && defaults.appid) { 23 | delete custom.appid; 24 | } 25 | 26 | if (!custom.secret && defaults.secret) { 27 | delete custom.secret; 28 | } 29 | 30 | const config = Object.assign(defaults, custom); 31 | 32 | if (config.appid !== 'undefined' && config.secret !== 'undefined') { 33 | if (config.logdir === 'undefined') { 34 | config.logdir = '/tmp'; 35 | } 36 | fs.writeFileSync(`${process.env.HOME}/agenthub-running.json`, JSON.stringify(config)); 37 | } 38 | -------------------------------------------------------------------------------- /official/start-agenthub.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | 4 | ENABLE_NODE_LOG=NO node $HOME/default.config.js 5 | 6 | if [ -f $HOME/agenthub-running.json ]; then 7 | ENABLE_NODE_LOG=NO agenthub $HOME/agenthub-running.json & 8 | fi 9 | 10 | exec "$@" 11 | -------------------------------------------------------------------------------- /push.sh: -------------------------------------------------------------------------------- 1 | docker images --format "{{.Repository}}:{{.Tag}}" toomee/alinode | xargs -L1 docker push 2 | --------------------------------------------------------------------------------