Dockerfile 中的“npm install”不会安装任何依赖项

Tra*_*Son 4 node.js npm docker docker-compose

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

....
added 552 packages from 678 contributors and audited 4007 packages in 11.2s
found 0 vulnerabilities
....
Run Code Online (Sandbox Code Playgroud)

我的 Dockerfile:

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" ]
Run Code Online (Sandbox Code Playgroud)

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"
Run Code Online (Sandbox Code Playgroud)

注意: 但是当我在 中添加多个命令时docker-compose,它可以工作。但我想在 中安装软件包Dockerfile,而不是docker-compose文件。

       command:
          - /bin/bash
          - -c
          - |
            npm install
            npm start
Run Code Online (Sandbox Code Playgroud)

我的问题和这个问题一模一样,我也尝试过,但没有成功。欢迎任何建议!

Lin*_*nPy 5

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

volumes:
          - ./app_front:/app_front
Run Code Online (Sandbox Code Playgroud)

在您的 中compose,我建议您删除该volumes部分并重试。