本文以 SimCaptcha 项目为例。
.github/workflows/deploy-docker.yml
上面方法,每次 push 的均为 ,没有版本号,不便于记录
参考:
GitHub ghcr.io
Docker Hub
目标 我们想要让 拥有 标记的成为一个 正式版或者 , 这样的版本会被 push 到 ,而没有 tag 的为开发版,但为了让少部分人能及时获取最新开发版,也 push 到 ,如何区分? 正式版: 在这个 后又更新了些,但不足以发布新版本,但仍 push 到 , 于是由 自动 push 到 标记为 ,例如: , 意味: 后的最新开发版(介于 到 下一个正式版本之前)
下面分为两种情况,有时我们的一个仓库可能需要发布不止一个包,于是如果直接使用 这样的 会导致混乱,不知道这是哪一个包的版本,于是这里用 , 例如 ,来标记 在 , 这时 就需要去除 ,再拿到 ,用作 到
Bug记录: 目前下方方案还有一个问题未解决: 那就是 获取上一次 的 ,在一个仓库有多个包时,获取的 ,可能不是你所需要包的对应 ,因此,为了防止混乱, 是直接添加在获取到的上一次 后,即没有做去除,例如, 没有去除前面的 ,而是直接用
docker-push-beta
UpyunAction-docker-push-beta.yml
docker-push-release
UpyunAction-docker-push-release.yml
docker-push-beta
AspNetCore3_1-docker-push-beta.yml
docker-push-release
AspNetCore3_1-docker-push-release.yml
当 触发运行时, 并不会触发运行,(因此不用担心发布release时, 错误push两次)
因为 的触发条件互斥,
上方并不意味着在所有 上的 都会触发,
因为有 同样的在有 时已经触发了,因此不会再触发 仅仅是 的条件
纠正,上诉说法有误 其实是因为 与 是两步, 触发一次, 触发一次, 仅仅是推送了 ,而不是源代码,因此仅仅触发了 , 而 ,不会推送 ,自然不会触发
参考:
GitHub Container Registry 可免费用于公共镜像。 在 Beta 版期间,Container Registry 可免费用于私有镜像,并且作为 GitHub Packages 的一部分,在普遍可用时将遵循相同的定价模型。
PS: 以前是 ,现在新的替换品是 , 它们都属于
域更改
Container registry 的域是 。
注意 对于 而言,与 不同,无需提交 , 标签将始终指向最新提交的镜像, 因此,在使用 自动构建时,无需 , 而在 , 只是在你没有指定 时默认即为
注意 测试了一下,发现好像又不一定 始终指向最新,因此最好还是 情况下, 和指定版本号 的 都 一次
docker-compose build
docker-compose build --pull
docker-compose pull
docker-compose up
其实直接一个up 就可以,如果没有build,则自动build,但是并不是每次都会build,如果已经存在镜像,则不build,如果要每次都build,则
docker-compose down
注意:虽然文档说是会删除镜像,但实际测试,使用 ,依然会显示有镜像,不过,确实相关容器被停止并删除
docker-compose push
示例:
参考:
添加用户 deploy-docker
补充:
在新建用户的同时添加到 docker组
为此用户设置密码
给已有用户增加组
或者
注意: 添加用户到某一个组 可以使用这个命令可以添加一个用户到指定的组,但是以前添加的组就会清空掉。 所以想要添加一个用户到一个组,同时保留以前添加的组时,请使用gpasswd这个命令来添加操作用户
查看当前用户所在组
查看指定用户所在组
查看有哪些组
查看有哪些用户
重启 Docker
感谢帮助!
本文作者: yiyun
本文链接: