解决包含node_pty的项目在docker中无法启动问题
Published in -
22-03-19 16:22
# 在使用docker部署一个包含node_pty的项目时,报innerError Error: Cannot find module ‘…/build/Debug/pty.node’ 错误
分析:
- node_pty是一个终端对象,兼容各种平台,使用时需要编译成对应平台的pty.node文件,就像node_sass一样,所以导致各个平台都需要独自编译才能运行
- 我的项目中使用到这个库,Dockerfile直接将代码与node_modules打包进node alpine镜像,当运行这个镜像时,打包到镜像的pty.node文件就会因为不兼容报错
- 处理办法:1.打包镜像时,执行一下重新编译pty.node文件。2.使用与运行时相同的Linux平台打包镜像
# 贴一下具体文件
Dockerfile
FROM node:14.17.1-alpine
# 打包后的源代码
COPY dist /app/app/
# 避免运行时重复安装,把依赖包也打包进镜像
COPY node_modules /app/node_modules
WORKDIR /app
EXPOSE 3004
# 安装环境并编译node-pty(使用其他镜像可能安装命令需要更换,我使用的是alpine)
# node-pty编译需要安装python、g++环境
RUN apk add --update \
python \
python-dev \
py-pip \
make \
g++ && cd node_modules/node-pty && yarn run install
# 启动项目
CMD node app/server.js
当然这个问题也适用于本地环境node_sass报错问题
^_^ Be the first to comment.
Comment
Nickname
Email (Reply notice)
Website
Content (can use Markdown syntax)