开始用 node 镜像,然后换 alpine, 最后上 centerOS
要么是 tnvm 没有正确设置path,手动设置之后运行shell语法报错。
再改一下语法,运行不报错了。但同时也下载不了了, 毫无反应
不知不觉,折腾了几个小时
但是我在Docker环境外 (Mac) 上安装又可以
有正确的姿势吗?
贴上部分 Dockerfile
FROM centos:6.10
# install bash
# RUN apk upgrade
# RUN apk add --no-cache bash
RUN yum -y install wget
# install alinode
RUN wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
# RUN touch ~/.bashrc
RUN echo 'export TNVM_DIR="/root/.tnvm"' >> ~/.bashrc
RUN echo 'alias tnvm="/root/.tnvm/tnvm.sh"' >> ~/.bashrc
# COPY ./tnvm.sh /root/.tnvm/tnvm.sh
# RUN chmod 0777 /root/.tnvm/tnvm.sh && sed '1i\#!/bin/bash' /root/.tnvm/tnvm.sh && mv /root/.tnvm/tnvm.sh /usr/local/bin/tnvm
RUN cat ~/.bashrc
RUN source ~/.bashrc
RUN . ~/.bashrc
RUN chmod 0777 /root/.tnvm/tnvm.sh
RUN mv /root/.tnvm/tnvm.sh /bin/tnvm
RUN tnvm ls-remote alinode
RUN tnvm install alinode-v4.3.0
RUN tnvm use alinode-v4.3.0
RUN node -v
RUN npm install @alicloud/agenthub -g
RUN npm config set registry https://registry.npm.taobao.org
RUN npm install pm2 -g --production
...
alpine 镜像我们有提供的…可以看下 Node.js 性能平台的容器镜像文档
来自酷炫的 CNodeMD
另外,有安装部署使用问题,可以加官方客户钉钉群 11794270 讨论
来自酷炫的 CNodeMD
好多层。试试在一个层构建?
FROM centos:6.10
RUN yum -y install wget
# install alinode
RUN wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash
RUN echo 'export TNVM_DIR="/root/.tnvm"' >> ~/.bashrc
RUN source ~/.bashrc \
&& tnvm install alinode-v4.3.0 \
&& tnvm use alinode-v4.3.0 \
&& npm install @alicloud/agenthub -g \
&& npm config set registry https://registry.npm.taobao.org \
&& npm install pm2 -g --productio
@hyj1991 alinode就是easy-monitor么?
=。= docker 里面装一些嵌入级别的东西还是难搞啊。非运维搞不定系列。我还是感觉原生靠谱好用,毕竟机器不是 8h16g 的高性能怪兽。👾
@MiYogurt 就是不用alinode,用原生node么?
感谢楼上各位提供的帮助
暂且可行的Dockerfile
比较蛋疼的是,原先使用的是 alpine
, 现改用 centerOS
,镜像大小直接增加200M
而且tnvm
的脚本只能用 bash
运行 alpine
默认为 sh
, 这很尴尬
FROM centos:6.10
ENV ALINODE_VERSION v4.3.0
ENV ALINODE_BIN_DIR /root/.tnvm/versions/alinode/$ALINODE_VERSION/bin
WORKDIR /root/app
RUN mkdir -p /root/app
# package information
COPY ./package.json /root/app/package.json
COPY ./package-lock.json /root/app/package-lock.json
# copy config file
COPY ./app.config.js /root/app/app.config.js
COPY ./ecosystem.config.js /root/app/ecosystem.config.js
# copy dist-build files
COPY ./dist-build /root/app/dist
# copy static files
COPY ./static /root/app/static
# copy alinode
COPY ./alinode.json /root/app/alinode.json
# use bash as default
# SHELL ["/bin/bash", "-c"]
# install alinode
RUN yum -y install wget \
&& wget -O- https://raw.githubusercontent.com/aliyun-node/tnvm/master/install.sh | bash \
&& source ~/.bashrc \
&& tnvm install alinode-$ALINODE_VERSION \
&& tnvm use alinode-$ALINODE_VERSION \
&& npm config set registry https://registry.npm.taobao.org \
&& echo NodeJS $(node -v) \
&& npm install @alicloud/agenthub pm2 -g --production \
&& npm install --production \
# link command to global
&& ln -s $ALINODE_BIN_DIR/* /usr/local/bin/
version: "3"
services:
nginx_proxy:
image: nginx:1.15.3-alpine
restart: always
working_dir: /home/static
volumes:
# - /etc/localtime:/etc/localtime # Linux 下, 保持容器和宿主的时间和时区一致
- ./nginx.conf:/etc/nginx/nginx.conf # 映射 ginx 配置文件
- ./logs/nginx:/var/log/nginx # 日志文件
ports:
- 3006:80 # 宿主端口:容器端口
links:
- web:web
web:
image: axetroy/app:latest
restart: always
working_dir: /root/app
environment:
- NODE_ENV=production
- HOST=0.0.0.0
- PORT=80
- ENABLE_NODE_LOG=YES
- NODE_LOG_DIR=/root/app/logs
volumes:
# - /etc/localtime:/etc/localtime # Linux 下, 保持容器和宿主的时间和时区一致
- ./logs:/root/app/logs # 日志文件
- ./temp:/root/app/temp # 缓存文件
# command: ["pm2-runtime", "start", "ecosystem.config.js"]
command: ["bash", "-c", "agenthub start alinode.json && pm2-runtime start ecosystem.config.js"]
@axetroy 使用alinode的alpine镜像就不用tnvm了
[CNodeMD]
@dbit-xia 并没有找到 alpine 镜像,如果有的话拜托 @ 我
阿里云容器镜像 要什么有什么