Node.js Npm在docker容器构建期间安装错误
我为我的nodejs web应用程序创建了非常简单的docker文件:Node.js Npm在docker容器构建期间安装错误,node.js,docker,npm,docker-compose,Node.js,Docker,Npm,Docker Compose,我为我的nodejs web应用程序创建了非常简单的docker文件: FROM node:8.11.4 FROM mysql:latest WORKDIR /ess-explorer COPY . . RUN npm install RUN cd config && cp config.json.example config.json && cp database.json.example database.json && cd ../
FROM node:8.11.4
FROM mysql:latest
WORKDIR /ess-explorer
COPY . .
RUN npm install
RUN cd config && cp config.json.example config.json && cp database.json.example database.json && cd ../
RUN npm run migrate
EXPOSE 3000
CMD ["npm", "dev"]
和docker.yml
version: '3'
services:
essblockexplorer:
container_name: ess-explorer
build: .
depends_on:
- db
privileged: true
ports:
- 3000:3000
- 3010:3010
db:
container_name: mysql
image: mysql
restart: always
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: '123'
volumes:
db-data:
每次出现错误时,在命令docker compose-f docker.yml build
之后
步骤5/9:运行npm安装
--->在d3644d792807中运行
/bin/sh:1:npm:未找到
错误:服务“essblockexplorer”生成失败:命令“/bin/sh-c npm install”返回非零代码:127
我做错了什么?我发现了类似的问题,但我没有找到解决这个问题的真正解决方案你不应该在Dockerfile中需要
mysql
映像;理想情况下,您的应用程序容器(essblockexplorer
)通过NodeJS客户端访问db容器(db
)。你所需要做的就是
db
)作为主机名,通过NodeJS客户端访问MySQL数据库(该主机名会自动作为别名加载到容器中)在Dockerfile中根本不需要
mysql
图像;理想情况下,您的应用程序容器(essblockexplorer
)通过NodeJS客户端访问db容器(db
)。你所需要做的就是
db
)作为主机名,通过NodeJS客户端访问MySQL数据库(该主机名会自动作为别名加载到容器中)@我从nodejs官方网站上复制了一个例子,我想你们不可能有两个像这样的
。所以只使用mysql映像,它没有npm。查看@L.Faros我在安装两个容器时没有发现任何错误,我可以看到5天前485MB的mysql最新2dd01afbe8df和7周前673MB的节点8.11.4 8198006b2b57的图片是,这不会引发任何错误,它会同时拉取两个图像,但是FROM
后面的命令将只使用最新的图像,而不使用最新的图像both@Veve我从nodejs官方网站上复制了一个例子,我想你们不可能有两个像这样的。所以只使用mysql映像,它没有npm。查看@L.Faros我在安装两个容器时没有发现任何错误,我可以看到5天前485MB的mysql最新2dd01afbe8df和7周前673MB的节点8.11.4 8198006b2b57的图片是,这不会引发任何错误,它会同时拉取两个图像,但是FROM
后面的命令将只使用最新的图像,而不是两个图像