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

Docker容器Git Pull异常:交互式启动后仓库未更新求助

问题原因

当你执行docker run -it test bash时,传入的bash命令会覆盖Dockerfile中定义的CMD指令,导致原来的cd PortOS-WrokSpace && git pull && ls && pwd完全没有执行,所以仓库不会更新。而直接执行docker run -it test时,容器会按CMD的指令运行,git pull自然生效。

解决方案

方案1:临时启动时先执行更新再进入shell

每次启动容器时,手动指定先执行git pull再进入bash:

docker run -it test sh -c "cd PortOS-WrokSpace && git pull && bash"

方案2:修改Dockerfile,确保更新逻辑必执行

这种方式更可靠,不管怎么启动容器,都会先拉取最新代码:

  1. 创建一个启动脚本start.sh,内容如下:
#!/bin/bash
# 拉取最新代码
cd /PortOS-WrokSpace && git pull
# 执行用户传入的后续命令(比如bash)
exec "$@"
  1. 修改Dockerfile,将脚本设为入口指令:
FROM ubuntu:latest
RUN apt update && apt upgrade -y && apt install git -y
RUN git clone https://github.com/Sanjay-Sagar-2005/PortOS-WrokSpace.git /PortOS-WrokSpace
COPY start.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/start.sh
ENTRYPOINT ["start.sh"]
CMD ["bash"]

修改后,不管是直接运行docker run -it test,还是指定docker run -it test bash,都会先执行git pull,再进入交互式shell。

方案3:在shell配置中自动执行更新(可选)

如果只在交互式bash中需要自动更新,可以把命令加到容器的~/.bashrc里:
在Dockerfile中添加:

RUN echo 'cd /PortOS-WrokSpace && git pull' >> ~/.bashrc

但注意:这种方式只在交互式登录shell中生效,且如果容器启动时不进入bash,更新逻辑不会执行,适合特定场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:45:01