聊聊docker容器安装nodejs环境遇到的坑

*申明:由于每个公司每个用户的需求不一致,因此本人遇到的问题不代表所有。本人也是初次接触docker,大佬不喜勿喷。

由于公司业务需求,需要将nodejs环境部署在容器中,与之前的ng,mysql,redis等相连,最终从web界面下载数据库中的文件。

一、用wget从官网下载nodejs tar包(前提容器可以连接外网,并且拥有wget工具)

wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz

二、解压得到同名文件夹

tar -xf node-v12.13.0-linux-x64.tar.xz

三、配置环境变量

vim .bash_profile(我这里配置局部变量,vim /etc/profile 全局变量)

export NODE_HOME=/nodejs路径

export PATH=$PATH:$NODE_HOME/bin 

export NODE_PATH=$NODE_HOME/lib/node_modules

四、保存退出,并且加载配置文件,否则无法生效

[root@60c8342a1e87 ~]# source  /etc/profile

[root@60c8342a1e87 ~]# node -v  
v12.13.0        此时说明nodejs安装成功

[root@60c8342a1e87 ~]# npm i   安装依赖包

[root@60c8342a1e87 ~]# npm run start   启动

[root@f76f71c72da2 config]# curl http://localhost:7001
hi, welcome to duyansoft     启动成功

此上为容器中手动部署,下面编写Dockerfile自动生成nodejs镜像,先错误示范:

[root@izbp158xjb4poadz7piz7tz nodejs]# cat Dockerfile
From centos
RUN yum -y install wget 
WORKDIR /root
RUN wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
RUN tar -xf node-v12.13.0-linux-x64.tar.xz
ADD profile /etc/      #根据手动部署替换容器中的profile
WORKDIR /usr/local/duyansoft/service/  #自定义目录
ADD anmiLocalNode.tar.gz .     #代码
RUN mv anmiLocalNode-*  anmiLocalNode #更名
#RUN /root/node-v12.13.0-linux/bin/npm i    #这里是因为一直无法找到npm命令火了,直接绝对路径运行,可见还是不对
WORKDIR  anmiLocalNode/config/ 
ADD config.default.js .     #修改了一些配置替换掉原始配置
RUN source /etc/profile   #加载全局变量
#WORKDIR /root/node-v12.13.0-linux-x64/bin
RUN npm i     
ENTRYPOINT  npm run start &&  tail -f /dev/random

命令无法找到,想想原因,手动部署没问题,为什么一到这样就找不着了。首先猜测是环境变量问题

五、正确编写Dockerfile

[root@izbp158xjb4poadz7piz7tz nodejs]# cat Dockerfile 
From centos
RUN yum -y install wget 
WORKDIR /root
RUN wget https://nodejs.org/dist/v12.13.0/node-v12.13.0-linux-x64.tar.xz
RUN tar -xf node-v12.13.0-linux-x64.tar.xz
ENV NODE_HOME=/root/node-v12.13.0-linux-x64
ENV PATH=$PATH:$NODE_HOME/bin
ENV NODE_PATH=$NODE_HOME/lib/node_modules   #将写在文件中的全局变量使用ENV,就能在容器中实现全局
RUN mkdir -p /usr/local/duyansoft/service/
WORKDIR /usr/local/duyansoft/service/
ADD anmiLocalNode.tar.gz .
RUN mv anmiLocalNode-*  anmiLocalNode
WORKDIR  anmiLocalNode/config/ 
ADD config.default.js .
RUN npm i 
ENTRYPOINT  npm run start &&  tail -f /dev/random
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker安装Node.js,你可以按照以下步骤进行操作: 1. 创建一个Dockerfile配置文件,可以使用以下内容: ``` # 设置基础镜像 FROM ubuntu:14.10 # 如果上个步骤已经更新软件源,这步可以忽略 RUN apt-get update # 安装 NodeJS 和 npm RUN apt-get install -y nodejs npm # 将目录中的文件添加至镜像的 /srv/hello 目录中 ADD . /srv/hello # 设置工作目录 WORKDIR /srv/hello # 安装 Node 依赖库 RUN npm install # 暴露 3001 端口,便于访问 EXPOSE 3001 # 设置启动时默认运行命令 CMD \["nodejs", "/srv/hello/index"\] ``` 这个Dockerfile会在容器安装Node.js和npm,并将当前目录下的文件添加到容器的/srv/hello目录中。然后,它会安装Node.js的依赖库,并暴露3001端口用于访问。 2. 使用Docker命令构建镜像。在终端中,进入包含Dockerfile的目录,并执行以下命令: ``` sudo docker build -t my-node-app . ``` 这个命令会根据Dockerfile构建一个名为my-node-app的镜像。 3. 运行容器。执行以下命令: ``` sudo docker run -it --rm --name=my-node-container -p 3001:3001 my-node-app ``` 这个命令会在容器中运行my-node-app镜像,并将容器的3001端口映射到主机的3001端口。 现在,你就可以在浏览器中访问http://localhost:3001来查看你的Node.js应用程序了。 #### 引用[.reference_title] - *1* [无涯教程:Docker - Node.js安装](https://blog.csdn.net/w116858389/article/details/120053526)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [docker安装nodejs](https://blog.csdn.net/weixin_33958366/article/details/89063910)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值