Docker 不会将文件更改从主机传播到容器

the*_*ode 2 node.js docker docker-compose

我的目标是配置 docker,以便当我修改主机上的文件时,更改会传播到容器文件系统内。

您可以将其视为服务器端节点代码的热重载。

nodemon 文件观察程序重新启动服务器以响应文件更改。

然而,当我使用 docker exec pokerspace_express_1 bash 检查容器并检查修改后的文件时,主机卷上的这些文件更改似乎没有反映在容器内部,这些更改不会从主机传播到容器内部。

Dockerfile

FROM node:8

MAINTAINER therewillbecode

# Create app directory
WORKDIR src/app

RUN npm install nodemon -g

# Install app dependencies
COPY package.json .
# For npm@5 or later, copy package-lock.json as well
# COPY package.json package-lock.json ./

RUN npm install


CMD [ "npm", "start" ]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: '2'
services:
  express:
   build: .
   depends_on:
    - mongo
   environment:
    - MONGO_URL=mongo:27017/test
    - SERVER_PORT=3000
   volumes:
    - ./:/src/app
   ports:
    - '3000:3000'
   links:
    - mongo

  mongo:
    image: mongo
    ports:
     - '27017:27017'

  mongo-seed:
    build: ./mongo-seed
    links:
     - mongo
Run Code Online (Sandbox Code Playgroud)

.dockerignore

.git
.gitignore
README.md
docker-compose.yml
Run Code Online (Sandbox Code Playgroud)

如何确保主机卷文件更改反映在容器中?

Kay*_*eri 5

在你的 Dockerfile 中尝试这样的事情:

\n\n
CMD ["nodemon", "-L"]\n
Run Code Online (Sandbox Code Playgroud)\n\n

有些人有类似的问题,并且能够通过将-L(这意味着 \xe2\x80\x9clegacy watch\xe2\x80\x9d)传递给 nodemon 来解决它。

\n\n

参考:

\n\n\n