You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何提交Docker镜像内的修改,解决容器开发时Git无法直接提交的问题

问题定性

该情况属于预期表现,核心原因如下:

  • 你当前使用Docker命名卷actions挂载actions服务的/app目录,该卷由Docker独立管理,存储位置不在你的本地项目目录内,无法同步宿主机项目根目录下的.git文件
  • 镜像构建过程默认不会将外层项目的.git目录打包进镜像,因此容器内本身不存在Git仓库信息,自然无法直接提交代码。

优化方案

方案一:本地目录绑定挂载(改动最小,最常用)

直接修改docker-compose.yml中actions服务的挂载配置,将原有命名卷替换为本地目录绑定挂载,实现代码双向实时同步:

# docker-compose.yml 改动部分
services:
  actions:
    # 其他原有配置保持不变
    volumes:
      # 替换原有的 actions:/./app 行
      - ./action-handlers:/app
      # 可选:添加该行避免容器内node_modules覆盖宿主机的node_modules,解决跨系统依赖兼容性问题
      - /app/node_modules

# 删掉顶层volumes中的 actions: 声明,该命名卷不再需要
volumes:
  db_data:
  # 移除 actions: 这一行

修改后重启服务生效:

  1. 停止原有服务:docker-compose down
  2. 重启服务:docker-compose up -d --build actions

配置生效后,容器内对/app目录的所有修改会实时同步到宿主机的my-project/action-handlers目录,你直接在宿主机的项目目录操作Git提交即可,无需手动复制代码,原有的热更新能力也不受影响。

方案二:配置Dev Containers实现容器内直接提交Git

如果你希望完全在容器内完成开发+Git提交操作,可以添加VSCode Dev Containers配置,将整个项目目录挂载到容器内:

  1. 在项目根目录创建.devcontainer/devcontainer.json,参考配置如下:
{
  "name": "Hasura Action开发环境",
  "dockerComposeFile": "../docker-compose.yml",
  "service": "actions",
  "workspaceFolder": "/workspace/action-handlers",
  "mounts": [
    // 挂载整个本地项目到容器内,包含.git目录
    "source=${localWorkspaceFolder},target=/workspace,type=bind",
    // 可选:共享宿主机的Git配置,无需在容器内重复设置用户名、凭证
    "source=${localEnv:HOME}/.gitconfig,target=/root/.gitconfig,type=bind,readonly"
  ]
}
  1. 重启容器后通过VSCode Remote-Containers打开项目,即可在容器终端直接执行Git命令提交修改。

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 19:39:04