我为自己的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 ../
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
发出通知后,我出现了一个错误
Step 5/9 : RUN npm install
---> Running in d3644d792807
/bin/sh: 1: npm: not found
ERROR: Service 'essblockexplorer' failed to build: The command '/bin/sh -c npm install' returned a non-zero code: 127
我究竟做错了什么?我发现了类似的问题,但没有找到解决此问题的真正方法
答案 0 :(得分:2)
您根本不需要在Dockerfile中使用mysql
映像;理想情况下,您的应用容器(essblockexplorer
)通过NodeJS客户端访问数据库容器(db
)。您所需要做的就是;
FROM mysql:latest
行。db
作为主机名通过NodeJS客户端访问MySQL数据库(该主机名将自动作为别名加载到您的容器中)。