1

我正在尝试建立一个良好的工作流程来使用 docker 和 nodejs

我认为我有一个很好的基础,但是即使我有一个定义的卷,我也无法将容器内生成的 package-lock.json 获取到我的源代码中

这是我的 Dockerfile:

FROM node
WORKDIR /app

COPY ./package.json ./
RUN npm install
RUN npm install -g nodemon
COPY ./src ./src

EXPOSE 3000

CMD ["nodemon", "./src/index.js"]

这是我的 docker-compose.yml:

version: '3'
services:
  web:
    build: ./app
    command: nodemon ./src/index.js
    ports:
      - '8080:3000'
    volumes:
      - ./app/src:/app/src
      - /app/node_modules/
    links:
      - mysql
  mysql:
    image: mysql:5.6
    environment:
      - MYSQL_DATABASE=dev
      - MYSQL_USER=dev
      - MYSQL_PASSWORD=dev
      - MYSQL_ROOT_PASSWORD=dev
    ports:
      - '3306:3306'

为了将 package-lock.json 提交到我的版本控制工具,每次我通过npm install容器内安装新包并生成/更新 package-lock.json 时,我想继续生成生成包的源代码 - lock.json 文件

4

1 回答 1

0

您需要添加/app到卷,因为package-lock.json将在此目录中生成,不是吗?

既然这样,你可以替换你的卷:

volumes:

    - ./app/src:/app/src

    - /app/node_modules/

上:

volumes:
    - ./app:/app

我也会选择/var/app而不是/app.

于 2019-01-02T21:23:30.977 回答