docker环境下的Gogs使用git-hook自动同步代码

Gogs挂载仓库

启动gogs的时候需要把仓库代码挂载到gogs容器里面

1
2
# repository 是仓库代码的路径
docker run --name=gogs -p 10022:22 -p 10080:3000 -v /var/gogs:/data -v /repository:/repository gogs/gogs

设置post-receive

编辑仓库
set-post-receive

修改.git权限

进入gogs容器修改你的仓库代码.git的权限

1
2
3
4
5
6
7
8
# 进入容器
docker exec -it gogs sh

# 进入仓库代码
cd /repository

# 修改.git权限
chown -R git:git .git

原文

HTTP-缓存控制

禁止使用缓存

缓存中不得存储任何关于客户端请求和服务端响应的内容。每次由客户端发起的请求都会下载完整的响应内容。

1
Cache-Control: no-store

强制确认缓存

如下头部定义,此方式下,每次有请求发出时,缓存会将此请求发到服务器(译者注:该请求应该会带有与本地缓存相关的验证字段),服务器端会验证请求中所描述的缓存是否过期,若未过期(注:实际就是返回304),则缓存才使用本地缓存副本。

1
Cache-Control: no-cache

私有缓存和公共缓存

“public” 指令表示该响应可以被任何中间人(译者注:比如中间代理、CDN等)缓存。若指定了”public”,则一些通常不被中间人缓存的页面(译者注:因为默认是private)(比如 带有HTTP验证信息(帐号密码)的页面 或 某些特定状态码的页面),将会被其缓存。

而 “private” 则表示该响应是专用于某单个用户的,中间人不能缓存此响应,该响应只能应用于浏览器私有缓存中。

1
2
Cache-Control: private
Cache-Control: public

缓存过期机制

过期机制中,最重要的指令是 “max-age=“,表示资源能够被缓存(保持新鲜)的最大时间。相对Expires而言,max-age是距离请求发起的时间的秒数。针对应用中那些不会改变的文件,通常可以手动设置一定的时长以保证缓存有效,例如图片、css、js等静态资源。

1
Cache-Control: max-age=31536000

缓存验证确认

当使用了 “must-revalidate” 指令,那就意味着缓存在考虑使用一个陈旧的资源时,必须先验证它的状态,已过期的缓存将不被使用。

1
Cache-Control: must-revalidate

原文