You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Docker挂载项目volume后如何忽略.git及PhpStorm文件?求助

解决Docker Volume挂载时忽略.git和PhpStorm文件的问题

嘿,我懂你的困扰——想用Docker Volume挂载本地项目,却不想让容器里出现.git文件夹和PhpStorm的相关文件,同时还不能影响本地的Git提交,之前试了.dockerignore却没效果对吧?这其实是因为你搞混了.dockerignore的作用场景,咱们一步步来搞定:

为什么.dockerignore在这里没用?

.dockerignore只在构建镜像(执行docker build命令)的时候生效,它的作用是告诉Docker:哪些文件不要打包进镜像里。但你是用Volume直接把本地目录挂载到容器中,这时候容器直接读取的是你本地的文件系统,.dockerignore根本管不到这个环节,所以容器里还是会看到.git这些文件。

可行的解决方案

方案1:只挂载项目中需要的目录(推荐)

与其挂载整个项目根目录,不如只挂载容器实际需要的业务目录(比如srcpublicconfig等),这样.git、.idea(PhpStorm的配置目录)这些无关文件自然不会进入容器,而且完全不影响本地的Git提交操作。

举个命令行的例子:

docker run -d \
  -v /你的本地项目路径/src:/容器内对应路径/src \
  -v /你的本地项目路径/public:/容器内对应路径/public \
  -v /你的本地项目路径/config:/容器内对应路径/config \
  你的镜像名称

如果用Docker Compose的话,配置文件可以这么写:

services:
  your-app-service:
    image: your-app-image
    volumes:
      - ./src:/app/src
      - ./public:/app/public
      - ./config:/app/config

方案2:通过临时目录同步需要的文件(适合必须挂载根目录的场景)

如果因为某些原因必须挂载整个项目根目录,你可以在本地创建一个临时的“干净”目录,用rsync把需要的文件同步过去,再挂载这个临时目录到容器:

  1. 创建临时目录:
mkdir -p /tmp/clean-project
  1. 同步需要的文件(排除.git和.idea):
rsync -av --exclude='.git' --exclude='.idea' /你的本地项目路径/ /tmp/clean-project/
  1. 挂载临时目录到容器:
docker run -v /tmp/clean-project:/容器内项目路径 你的镜像名称

这种方法需要注意定期同步文件(如果本地有修改的话),不如方案1方便,所以优先推荐方案1。

额外提示

PhpStorm的相关文件一般存放在.idea目录里,所以不管是用哪种方案,只要确保这个目录不被挂载/同步到容器里就行,本地的.idea目录完全可以保留,不影响Git提交(只要你的本地.gitignore里已经排除了.idea,不过就算没排除,也不会影响容器里的内容)。

内容的提问来源于stack exchange,提问作者user6830821

火山引擎 最新活动