Docker 环境下缺失Node环境

Docker 环境下缺失Node环境

由于业务中需要使用linux或windows去执行操作命令,因为本环境利用的node环境,所以上线过程中,发现node环境缺失引发 java.io.IOException: Cannot run program “node”: error=2, No such file or directory错误

首次尝试使用DockerFile软连接解决问题 此方法可以解决docker环境需要node依赖问题。无需多次npm install

解决方案如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#1.jdk8环境
FROM openjdk:8-jdk-alpine
#2.维护者
MAINTAINER zjy
#3 设置docker源 为阿里镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
#4 通过上一步安装字体
RUN set -xe \
&& apk --no-cache add ttf-dejavu fontconfig
# 设置node运行环境
RUN ln -s /opt/node/bin/node /usr/local/bin/node
RUN ln -s /opt/node/bin/npm /usr/local/bin/npm
#3.挂载目录
VOLUME /tmp
#4.部署项目的绝对路径
ADD target/*.jar jd.jar
#5.对外开放端口
EXPOSE 8080
#6.运行项目
ENTRYPOINT ["java","-jar","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Duser.timezone=GMT+08","/jd.jar"]


配合Docker run jd -v /opt:/opt使用

软链接后发现进入终端 使用node可以正常使用,但是exec执行指令就会报错。

所以改用解决方案2如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#1.jdk8环境
FROM openjdk:8-jdk-alpine
#2.维护者
MAINTAINER zjy
#3 设置docker源 为阿里镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
#4 通过上一步安装字体
RUN set -xe \
&& apk --no-cache add ttf-dejavu fontconfig nodejs
#3.挂载目录
VOLUME /tmp
#4.部署项目的绝对路径
ADD target/*.jar jd.jar
#5.对外开放端口
EXPOSE 8080
#6.运行项目
ENTRYPOINT ["java","-jar","-XX:+UnlockExperimentalVMOptions","-XX:+UseCGroupMemoryLimitForHeap","-Duser.timezone=GMT+08","/jd.jar"]

JAVA让宿主机执行指定命令

1
2
String command = "node /opt/getJDCookie.js";
Process process = Runtime.getRuntime().exec(command);
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码

请我喝杯咖啡吧~

支付宝
微信