Compose 仅在新文件上触发监视

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

遇到一个问题:创建新文件将触发我的撰写监视操作,但在同一目录中编辑和保存文件则不会。

使用我的 IDE (Intellij IDEA) 或记事本编辑和保存文件不会触发我的手表操作,但创建新文件或将字符串回显到现有文件中会触发我的手表操作。不太确定 echo 在幕后实际如何工作,如果它像 vim 一样并创建一个隐藏的交换文件(这显然会创建一个新文件)并触发该操作,那就有意义了。

这是我的 compose.yaml 的样子:

services:
  db:
    image: postgres:latest
    env_file:
      - .env
    ports:
      - 5432:5432
    volumes:
      - db:/var/lib/postgresql/data
    networks:
      - backend
  backend:
    build: .
    develop:
      watch:
        - action: rebuild
          path: ./project-planner-api/
          target: /project-planner-api/
    image: bellsoft/liberica-runtime-container:jdk-17-glibc
    env_file:
      - ./project-planner-api/.env
    ports:
      - 3000:3000
    networks:
      - backend
    depends_on:
      - db
    command:
      ./gradlew bootRun

volumes:
  db:
    driver: local

networks:
  backend: {}

还有 dockerfile:

FROM bellsoft/liberica-runtime-container:jdk-17-glibc
USER backend
WORKDIR /project-planner-api
COPY --chown=backend:backend ./project-planner-api .
EXPOSE 3000

我正在尝试为我的团队设置一个开发环境以用于新项目。我已经尝试过使用 spring devtools 进行热重载,但这需要你的 IDE 每次在接受更改之前都进行重建,我觉得这有点违背了创建 docker 环境的目的。我使用 docker 的原因是我们不需要担心谁在运行什么,也不需要让人们安装和设置 postgres 以及特定的 jdks。目前,如果我将新文件添加到 /project-planner-api/ 目录,它将重建,并且速度足够快,足以让我满意。只是不处理编辑文件。

docker docker-compose
1个回答
0
投票

正如herehere所提到的,事实证明这是一个WSL问题。如果您从 wsl 启动 docker,但在 Windows 目录中工作,则文件编辑不会正确传播到容器,并且监视不会触发。我通过将项目目录移动到 wsl 内并从那里运行容器来解决了这个问题。

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