当然如果是 bare metal 上肯定也好不到哪里去。
今天尝试把一个 Docker Image 推送到 Google Cloud ,然后用 Cloud Run 跑服务,遇到了无数的问题。先是 Docker 不熟练,需要用 Nginx 服务器把 MKDocs 编译出来的静态站点显示出来,研究了半天 Dockerfile 的语法,终于用双 Docker 的方法搞定了。本地上能够用 127.0.0.1:80 来访问,第一阶段成功。
接下来是把 Docker Image 放在 Cloud Run 上跑。碰到了许多问题——首先是许可不足,搜索了一下,发现可以用 impersonate service account 的方法借服务账号的权限。第一次成功了,把 Docker Image 推送到了 Artifact Registry ,但是 Cloud Run 怎么跑也跑不出来,看 log 什么也没有。这次折腾了不少时间,后来发现,原来是自己脑残,M1 上 build 的不能在云端用,必须是 amd64 的。
重新编译了之后再次推送,老问题出了新花样,不知道什么原因总是说我没有 crendential ,折腾了老半天,只好用另外一种办法给 docker 推送的权限,这次总算搞定了。最后一步就是访问 Cloud Run 的网站,发现 Cloud Run 的 url 总是显示 403 ,原来是需要 token ,但是 Chrome 上改 header 十分麻烦,最后用 Modheader 解决了。
当然事情还没做完,之后还要研究怎么用 GitHub Action 来做 CICD ,不然如何做到动态部署呢?当然今天实在是没心思搞了,明天继续。
我的感想就是,让我们这种没做过开发的人做 Ops ,真是受罪。我从来没用过 Nginx 的人,哪里知道怎么设置?更别说还得在 Docker 里写额外的设置。我也没弄过 Cloud Run ,它是有 doc ,问题是 doc 未必能解决我的问题,最后还是 Stackoverflow 一把梭。好在本人搜索技能尚可,所有的东西都能搜到。看来搜索能力的确是我们这种挫逼的必备技能。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.