Docker compose watch 没有更新我的文件

问题描述 投票:0回答:1

我的容器基本上已经死了。我有一个 vite React 前端,我正在尝试将 main.jsx 的脚本标记更新为正确的路径,但它仍然显示为几个小时前的样子,并且我已经进行了多次更改。

之前我使用节点作为用户,但由于权限问题,我更改为 root 仅用于开发,但在运行 docker compose up 后,我仍然在容器中作为节点运行。它不仅不会更新容器,甚至在第一次构建时也不会更新。

我的html:


....html
    <div id="root"></div>
    <script type="module" src="./src/main.jsx"></script>
  </body>
</html>

Docker 文件:

#backend

FROM node:20-alpine

WORKDIR /app


COPY package*.json ./

USER root



RUN npm install

COPY . .



EXPOSE 8000

CMD npm start

#frontend

FROM node:20-alpine



WORKDIR /app

COPY package*.json ./


USER root


RUN npm install

COPY . .

EXPOSE 5173

CMD npm run dev

撰写:


version: "3.8"

services:
  web:
    depends_on:
      - api

    build: ./frontend

    ports:
      - 5173:5173

    environment:
      VITE_API_URL: http://localhost:8000

    develop:
      watch:
        - path: ./frontend/package.json
          x-initialSync: true
          action: rebuild
        - path: ./frontend/package-lock.json
          x-initialSync: true
          action: rebuild

        - path: ./frontend
          x-initialSync: true
          target: /app
          action: sync

  api:
    depends_on:
      - db

    build: ./backend

    ports:
      - 8000:8000

    environment:
      DB_URL: mongodb://db/anime

    develop:
      watch:
        - path: ./backend/package.json
          x-initialSync: true
          action: rebuild
        - path: ./backend/package-lock.json
          x-initialSync: true
          action: rebuild

        - path: ./backend
          x-initialSync: true
          target: /app
          action: sync

  db:
    image: mongo:latest

    ports:
      - 27017:27017

    volumes:
      - anime:/data/db

volumes:
  anime:

然后我运行 docker compose up --watch

docker exec -it 后端容器 sh

$ whoami

节点

猫索引.html


    <div id="root"></div>
    <script type="module" src="/mern-docker/frontend/src/main.jsx"></script>
  </body>
</html>
reactjs node.js docker docker-compose dockerfile
1个回答
0
投票

docker compose up --build --watch 似乎是答案。奇怪的是,我正在观看的教程并没有明确说明这一点。我的印象是 docker compose up 会构建你的容器,即使文档这么说:

用法 docker compose up [选项] [服务...] ....... 构建、(重新)创建、启动并附加到服务的容器。

但显然这不是真的,你需要 --build 选项。

© www.soinside.com 2019 - 2024. All rights reserved.