我无法将我的 docker 容器同时连接到同步卷和自动启动开发环境。
为了实现卷同步,允许对容器外部代码的更改反映在容器内部(运行时),反之亦然;我在 docker-compose.yml 中使用了以下内容:
volumes:
- ./frontend:/frontend
仅当我的 Dockerfile 不包含以下内容时才有效:
CMD ["npm", "run", "dev"]
如果
CMD
行存在,我会收到以下错误:
sh: vite: not found
如果没有
CMD
,我可以执行到容器中并手动运行命令,但我的目标是让它自动启动。如果 docker-compose.yml 文件不包含卷映射,则自动启动 CMD
会成功运行。
我承认我对 JS(和 React)和 docker 都是全新的,所以我可能错过了一些关键信息。非常乐意提供任何要求的东西。 SO 中还有其他几个看似相似的线程,但可惜每个问题似乎都是独一无二的;我无法确定我的问题来自哪里;本质上就是为什么它找不到 vite 命令。
谢谢,
想要成为开发者
您可以使用 Docker Compose 的新功能
watch
来执行此操作:
services:
frontend:
build:
context: frontend/
ports:
- 5173:5173
depends_on:
- app
develop:
watch:
- action: sync
path: ./frontend/
target: /frontend
ignore:
- node_modules
然后,当您运行 docker 命令时,请使用:
docker compose up --watch
。
有关参考,请参阅 Docker Compose Watch 的官方文档:https://docs.docker.com/compose/how-tos/file-watch/