我已经构建了一个具有以下文件结构的 Web 项目:
-root_folder/
-docker-compose.yml
-.git/
-backend/
-.dockerignore
-docker/
-dev.dockerfile
-frontend/
-.dockerignore
-docker/
-dev.dockerfile
Run Code Online (Sandbox Code Playgroud)
我在 Docker 容器中运行前端应用程序 (Angular)。我还在另一个容器中运行后端应用程序 (ExpressJS),但后端与我的问题无关。
我已将卷 ./frontend 安装到容器中的 /app 以允许热重新加载。
这个配置可以很好地运行 Angular。但是,当运行带有 --watch 标志的 Jest 时,它给出了错误--watch is not supported without git/hg, please use --watchAll
我回到 dockerfile 并添加:
RUN apk update -q && \
apk add -q git
Run Code Online (Sandbox Code Playgroud)
但这并不能解决问题。从我所做的所有研究来看,问题似乎是 Jest 监视模式以某种方式使用 git 来检测更改,但我的 git 文件夹不在“前端”子目录中。
我试图修改我的容器以将所有文件复制到 /app/frontend ,然后也复制并挂载 .git 文件夹到 /app/.git 但这没有效果。
我不想用 --watchAll 运行 Jest(但我测试了它并且运行正常)。有什么建议?
编辑回答了我自己的问题。我在安装 .git 文件夹时走在正确的轨道上。缺少的步骤是设置 GIT_WORK_TREE 和 GIT_DIR 环境变量。