使用 docker compose 进行热重载

Joh*_*ohn 7 docker docker-compose angular

我刚刚从Project Clarity中植入了一个 Angular 应用程序,并尝试在 Docker 容器中运行它时使其热重载工作。

如果我进入正在运行的容器并编辑文件,重新加载工作正常,但我希望能够编辑容器外的文件并在容器中更新它们。如果我设置音量,我认为会起作用,但它似乎不起作用。

我的 Dockerfile....

FROM node:latest

RUN mkdir -p /usr/src/client
WORKDIR /usr/src/client

COPY package.json /usr/src/client
RUN npm install
COPY . /usr/src/client
EXPOSE 4200
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)

和我的 docker-compose.yml 文件...

version: '2' 

services:
  client:
    build: clarity-seed
    ports:
      - "4200:4200"
    volumes:
      - ./clarity-seed:/usr/src/client
      - /usr/src/client/node_modules
Run Code Online (Sandbox Code Playgroud)

我使用 docker-compose 是因为我最终会设置一个 Express 服务器和一个 mongo 数据库。

小智 1

根据我从这篇中等文章中了解到的内容: https://olshansky.medium.com/hot-reloading-with-local-docker-development-1ec5dbaa4a65

设置卷时,应将容器中的文件直接映射到项目目录中的文件(将容器外部文件映射到容器内部文件)。

因此,对于您的情况,您只需更改第一个卷以适合本地文件,即:

build: clarity-seed

ports:

  - "4200:4200"

volumes:

  - ./:/usr/src/client

  - /usr/src/client/node_modules
Run Code Online (Sandbox Code Playgroud)