ubuntu16.04+docker安装scm-manager搭建git服务器,并实现网站自动部署

来源:赵克立博客 分类: Docker 标签:Docker发布时间:2019-12-06 13:17:03最后更新:2019-12-24 15:06:15浏览:932
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
更新时间:
2019-12-24 15:06:15
温馨提示:
学无止境,技术类文章有它的时效性,请留意文章更新时间,如发现内容有误请留言指出,防止别人"踩坑",我会及时更新文章

前言

docker中安装scm-manager搭建git服务器,并实现网站自动部署

ubuntu使用scm-manager+java搭建git服务器并使用hook实现网站自动部署

window使用scm-manager+java搭建git服务器并使用hook实现网站自动部署

docker是个好东西,在使用scm-manager的时候也遇到啦点问题,如果直接部署在宿主机scm-manager就需要单独部署,我喜欢用docker-compose来一键自动化操作,但是发现scm-manager放docker后部署web跟宿主机有很大的不同,宿主机中是有git的,可以直接在post-receive中执行git pull 等命令实现更新web代码,

但是容器中不行,下面是一个方法使用ssh执行命令自动部署。如下

安装scm-manager

docker-compose.xml中的配置

  scm-manager:
    image: sdorra/scm-manager
    container_name: scm-manager
    ports:
      - "${SCM_MANAGER_PORT}:${SCM_MANAGER_PORT}"
    volumes:
      - ${SOURCE_DIR}:/www/:rw
      - ${DATA_DIR}/scm:/var/lib/scm:rw
      - ./logs/scm:/var/log/scm:rw
    restart: always
    networks:
      - default

自动安装不用管,成功后创建自己的第一个git库。

自动部署

配置站点

先把代码拉到站点里面,注意里面添加上用户名密码,不然的话到后面自动部署 git pull时会让你输用户名和密码,就会卡到那里

git clone http://用户名:密码@www.xxxxxx.com/scm/git/名字   /www/站点目录

配置容器连接宿主机的ssh

生成ssh连接需要的key,所以先进入容器生成密钥,进入容器的shell

docker exec -it scm-manager /bin/sh

生成密钥

ssh-keygen -t rsa -C "735579768@qq.com"

1912061575609875138059.png

复制id_rsa.pub 字符串

cat ~/.ssh/id_rsa.pub

全部复制,别漏了

1912061575609989225624.png

登陆宿主机的shell,先查看当前用户目录有没有.ssh文件如果没有的话先创建文件夹

mkdir -p ~/.ssh

把上一步容器中生成的id_rsa.pub字符串添加进去 ~/.ssh/authorized_keys

echo ssh-rsa AAAAB3NzaC1yc2EAAAA**********************************@qq.com >> ~/.ssh/authorized_keys

完成啦ssh的配置


添加发布hook

路径如下

1912061575609613630668.png

内容如下

#!/bin/sh
ssh root@172.***.1 "git -C /www/website  pull"

上面命令是在容器中使用ssh执行宿主机命令的,里面web目录也是宿主机的目录,git也是宿主机的命令,别搞错啦,下面权限添加完成后执行上面的命令看能不能连接到宿主机


注意使用下面命令添加可执行权限,要在容器中设置执行权限,退出当前的容器shell,再次以root权限身份进入容器shell,

 docker exec -it -u root scm-manager /bin/sh

添加权限,注意后面那个路径,别搞错

chmod +x /var/lib/scm/repositories/git/mama/hooks/post-receive

1912061575610515741014.png

最后添加一些文件然后push就可以把代码自动拉到站点啦,

容器中测试拉取代码

使用前先用上面脚本中的命令在容器中执行下看下能不能拉取代码,切记

1912241577171116394421.png



微信号:kelicom QQ群:215861553 紧急求助须知
Win32/PHP/JS/Android/Python