介绍最后最后一步就是使用git同步自动部署代码。添加用户添加git用户以禁用git用户的shell登录。编辑/etc/passwd,将git:x:1001:1001::/home/git:/bin/bash改为git:x:1001:1001::/home/git:/usr/bin/git-shell参考中上一篇,设置免密码,加入用户组sudousermod-aGdockergit创建裸仓库创建目录库作为仓库在库中初始化裸仓库sudogitinit--bareyou_project_name.git设置所有者为git用户sudochown-Rgit:dockerlibrary设置权限为同组可写sudochmod-Rg+wlibrary项目目录linkgit也设置权限为同组可写并设置ownersudochmod-Rg+wyou_project_pathsudochown-Ruser:dockeryou_project_path在代码目录下,初始化git,gitinit添加所有文件,gitadd.提交gitcommit-m'init'将代码连接到远程仓库,gitremoteaddorigin/library/you_project_name.gitpush代码,gitpushoriginmastersetbranchtrackinggitbranch--set-upstream-to=origin/mastermaster本地同步代码本地直接clonegitclonegit@you_server:/library/you_project_name.git本地也是laradock,同样的过程,进入Installtheprojectcomposerinstallcp.env.example.envphpartisankey:generate在workspace容器中配置nginx域名和本地主机,然后重启nginxdocker-composerestartnginx然后正常的git操作设置githook最后一步是设置hook和自动部署。在服务器/library/you_project_name.git/hooks目录下编辑post-update如下#!/bin/shunsetGIT_DIRDIR_ONE=you_project_path/#你的项目目录cd$DIR_ONEgitpulloriginmaster以上是初始版本。经过几天的使用,我发现了一个问题。使用git用户进行自动部署,项目目录下文件的属主会变成git(虽然不影响代码运行),所以pull后属主和权限都重新设置了(git用户需要sudo不用a密码,参考上一篇),最终结果如下#!/bin/shunsetGIT_DIRDIR_ONE=you_project_path/#你的项目目录cd$DIR_ONEgitpullsudochown-Ruser:docker$DIR_ONEsudochmod-Rg+w$DIR_ONEsetownersudochowngit:dockerpost-updatesetpermissionssudochmod+x更新后结语终于完成了。过程并不顺利,但总比以前好。剩下的就是写代码了。
