【发布时间】:2018-12-13 16:44:04
【问题描述】:
我试图将我的nodeJS api dockerize。查看以下文件:
.\package.json
{
"name": "test-api",
"version": "1.0.0",
"description": "TBD",
"scripts": {
"start": "node ./bin/www"
},
"keywords": [
"test",
"API"
],
"author": "test",
"dependencies": {
"bcrypt": "^2.0.1",
"bcrypt-promise": "^2.0.0",
"body-parser": "^1.18.3",
"debug": "^3.1.0",
"dotenv": "^6.0.0",
"express": "^4.16.3",
"jsonwebtoken": "^8.3.0",
"morgan": "^1.9.0",
"multer": "^1.3.1",
"mysql2": "^1.5.3",
"nodemailer": "^4.6.7",
"parse-error": "^0.2.0",
"passport": "^0.4.0",
"passport-jwt": "^4.0.0",
"sequelize": "^4.37.10",
"validator": "^10.4.0"
}
}
.\docker-compose.yml
version: '2'
services:
api:
build: .
ports:
- "4200:4200"
depends_on:
- db
environment:
- DATABASE_HOST=db
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules
db:
build: ./db
.\Dockerfile
FROM node:8
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 4200
CMD [ "npm", "start" ]
.\db\Dockerfile
FROM mysql:latest
ENV MYSQL_ROOT_PASSWORD root
ENV MYSQL_DATABASE test_dev
ENV MYSQL_USER test-dev
ENV MYSQL_PASSWORD testapi
当我执行“docker-compose up”时出现以下错误-
我对此很陌生,解决这个问题的解决方案和一些关于研究更多内容的指示会对我有很大帮助!
【问题讨论】:
-
你已经尝试过什么?您希望在
/usr/src/app/package.json上存放什么文件,它是如何到达那里的? -
@DavidMaze 我已经根据nodejs.org/en/docs/guides/nodejs-docker-webapp WORKDIR /usr/src/app 输入了代码 -> 这将是从现在开始的密码 COPY package*.json ./ -> 文件将从 ./ 复制到 pwd
-
我认为您正在将 package.json 复制到现有文件夹,然后您正在安装卷。尝试从撰写文件中删除
- .:/usr/src/app行 -
@mulg0r 还是同样的错误imgur.com/obkKeTH
-
1) 您的目录树在
./中的外观如何。 2) 从 docker-compose 中的api服务中删除第二个卷,因为拥有它没有任何意义,因为您已经将整个目录安装到/usr/src/app3) 您不需要为db提供 Dockerfile ,在 docker-compose 文件中使用environment服务的db配置。
标签: mysql node.js docker docker-compose dockerfile