如何在Docker容器中编辑.sql文件并同步至本地Git仓库?
解决思路
1. 先搞定本地与容器的文件同步问题
你现在的问题核心是本地克隆的仓库和容器内的是两个独立副本,所以两边修改不会同步。必须在启动容器时通过挂载卷把本地目录和容器目录绑定,实现实时同步:
- 先停掉当前容器:
docker stop 5f8d2(5f8d2是你的容器ID) - 删除旧容器(已启动的容器没法修改挂载配置):
docker rm 5f8d2 - 重新启动容器,添加挂载参数,把本地
desktop/folder目录挂载到容器内的/folder路径:
替换成你本地的实际绝对路径即可,之后两边文件会自动同步。# Windows 示例 docker run -v C:\Users\你的用户名\desktop\folder:/folder [你的镜像名称] # Mac/Linux 示例 docker run -v ~/desktop/folder:/folder [你的镜像名称]
2. 编辑文件的两种实用方式
方式一:本地编辑(推荐)
挂载卷后,直接用你本地的编辑器(比如VS Code)打开desktop/folder/fileiwant.sql修改,改动会立刻同步到容器内,不用进容器操作。
方式二:容器内直接编辑
容器里没有装VS Code,所以code .用不了,直接用终端自带的编辑器就行:
- 用
nano:nano /folder/fileiwant.sql,编辑完按Ctrl+O保存,Ctrl+X退出 - 用
vim:vim /folder/fileiwant.sql,按i进入编辑模式,改完按Esc,输入:wq保存退出
3. 推送到GitHub的步骤
选本地或容器内操作都可以,推荐本地操作更方便:
本地操作
直接在本地终端执行:
cd desktop/folder git add fileiwant.sql git commit -m "update fileiwant.sql" git push
容器内操作
如果在容器里改了文件,直接在容器终端执行:
cd /folder git add fileiwant.sql git commit -m "update fileiwant.sql" git push
- 若容器里没装Git,先安装:Debian/Ubuntu系用
apt update && apt install git,CentOS系用yum install git - 首次推送前要配置GitHub账号:
HTTPS方式push会提示输账号密码;SSH方式需要把你的本地SSH密钥复制到容器内的git config --global user.name "你的GitHub用户名" git config --global user.email "你的GitHub绑定邮箱"/root/.ssh/目录。
内容的提问来源于stack exchange,提问作者0004
相关产品推荐
相关产品推荐

