【问题标题】:docker-compose.yml issue nodejs and mysqldocker-compose.yml 问题 nodejs 和 mysql
【发布时间】: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/app 3) 您不需要为 db 提供 Dockerfile ,在 docker-compose 文件中使用environment 服务的db 配置。

标签: mysql node.js docker docker-compose dockerfile


【解决方案1】:

尝试使用此 Dockerfile(避免 COPY *),我建议在目标中使用绝对路径:

.\Dockerfile

FROM node:8
COPY package.json /usr/src/app
WORKDIR /usr/src/app
RUN npm install
COPY . .
EXPOSE 4200
CMD [ "npm", "start" ]

【讨论】:

  • 在我执行“docker-compose up”之前删除了所有图像,但仍然出现错误imgur.com/obkKeTH
  • 我需要 package.json 来准确模拟你的情况
猜你喜欢
  • 2020-05-03
  • 1970-01-01
  • 2020-08-09
  • 2019-05-11
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多