开发过程中持续使用Git代码更新Docker容器的方法
在开发调试过程中,需要不断更新代码到Git库,然后使用Git库中的最新代码更新运行着的Docker容器,目前看来有如下两种方法,建议使用第二种。1. 直接在容器中执行git命令,更新容器中的目录和文件(不推荐)1) 首先,在构建容器镜像文件的时候,定义在Dockfile文件中并设置代码的Git库RUN apt-get install -y gitRUN git config --global ..
·
在开发调试过程中,需要不断更新代码到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
更多推荐
已为社区贡献16条内容
所有评论(0)