Dockerfile中的'npm install'不安装任何依赖项

时间:2019-08-19 05:29:22

标签: node.js docker npm docker-compose

有点奇怪,运行docker-compose build时没有看到任何错误,但是当我访问容器时,没有看到node_modules文件夹,只有package.json和{ {1}}个文件。 我运行package-lock.json时的所有日志均正常显示。例如:

docker-compose build

我的Dockerfile:

....
added 552 packages from 678 contributors and audited 4007 packages in 11.2s
found 0 vulnerabilities
....

还有FROM node:10 ENV APP_PATH /app WORKDIR $APP_PATH COPY ./app_front/package*.json ./ RUN npm install -g ts-node typescript RUN npm install COPY . . EXPOSE 3000 CMD [ "npm", "run", "start" ] 文件

docker-compose

注意: 但是,当我在version: "3.5" services: mysql: image: mysql:5.7 container_name: racer_mysql restart: always environment: MYSQL_DATABASE: xxxx MYSQL_USER: "xxxx" MYSQL_PASSWORD: "xxxx" MYSQL_ROOT_PASSWORD: xxxx ports: - "3306:3306" expose: - "3306" volumes: - ./docker/database:/var/lib/mysql - ./docker/mysql_init:/docker-entrypoint-initdb.d app_front: container_name: app_front build: context: . dockerfile: ./docker/app_front/Dockerfile volumes: - ./app_front:/app_front ports: - "3000:3000" 中添加多个命令时,它可以工作。但是我想将软件包安装在docker-compose中,而不是Dockerfile文件中。

docker-compose

我尝试过的问题与此issue完全相同,但没有成功。 欢迎任何建议!

2 个答案:

答案 0 :(得分:1)

我认为您是在构建过程的App文件夹中构建/app_front/,然后使用以下命令删除该文件夹中的“覆盖”所有文件:

volumes:
          - ./app_front:/app_front

在您的compose中,建议您删除volumes部分,然后重试。

答案 1 :(得分:1)

可能发生的情况是COPY . .正在覆盖映像中的node_modules目录。在与Dockerfile相同的目录中创建一个.dockerignore文件,并忽略node_modules