开发过程中持续使用Git代码更新Docker容器的方法

20 篇文章 1 订阅

在开发调试过程中,需要不断更新代码到Git库,然后使用Git库中的最新代码更新运行着的Docker容器,目前看来有如下两种方法,建议使用第二种。

1. 直接在容器中执行git命令,更新容器中的目录和文件(不推荐)

1) 首先,在构建容器镜像文件的时候,定义在Dockfile文件中并设置代码的Git库

RUN apt-get install -y git

RUN git config --global user.name "Xiangbin Han"
RUN git config --global user.email "youremail@mydomain.com"

RUN mkdir /home/myname/.ssh/
RUN chmod 700 /home/myname/.ssh/
ADD id_rsa /home/myname/.ssh/
RUN chmod 600 /home/myname/.ssh/id_rsa

RUN echo 'StrictHostKeyChecking no\nUserKnownHostsFile /dev/null' > /home/myname/.ssh/config
RUN chmod 644 /home/myname/.ssh/config

RUN su -myname -c \
  "git clone ssh://myname@gerrit.server.com:29418/myparent/myproject /home/myname/myproject \
  ; cd /home/myname/myproject \
  ; git fetch ssh://myname@gerrit.server.com:29418/myparent/myproject ${refs} \
  ; git checkout FETCH_HEAD"

RUN chown -R myname:mygroup /home/myname

2) 其次,基于构建的容器镜像文件启动容器
docker run -it --name container_name image_name:version

3) 需要更新运行中的容器的目录或文件时,执行如下Docker命令docker exec

docker exec container_name bash -c "cd /home/myname/myproject;git fetch ssh://myname@gerrit.server.com:29418/myparent/myproject ${GERRIT_REFSPEC};git checkout FETCH_HEAD"


说明,这种方法的弊端是必须能够在容器内部执行Git命令,因而不得不将私钥加入到容器,导致安全风险。


2. 直接对容器实例执行docker cp命令,更新容器中的目录和文件(推荐)

docker cp ~/myproject/. container_name:/home/myname/myproject

3. 启动容器实例的时候,为容器加载Volume(推荐)

docker run -v /mnt/temp/myproject/:/home/myname/myproject ...

补充说明:

在生产环境中,由于代码比较稳定,可以在构建镜像的时候就代码直接加入到镜像中。

即在Dockfile中设置如下:

RUN COPY . /home/myname/myproject


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值