在 Docker 中运行 GUI 程序

最近在调试 MCU 的过程中需要用到 ST 新推出的软件STM32CubeMonitor,虽然有 Linux 版本,但官方只提供了deb安装包,这让 Arch 用户咋办?用debtap,也不是不行,但我更新仓库就从没成功过,之前在 Windows 中用过 SSH 的X11 Forwarding透传功能,可以远程运行 GUI 程序,寻思着在 Docker 中是不是也可以,尝试了一下,遇到了一点问题,最终还是成功了,接下来就介绍一下方法和遇到的问题。

Hexo如何实现CI/CD?

现在来介绍一下我的网站是如何实现持续部署的。

Docker

首先要在服务器上Build一个Docker镜像,用于生成Hexo网站,因为如果直接用Python调用shell命令构建的话,会有环境变量和权限的问题,所以这里我们把源代码目录bind到容器中,然后在容器中构建。Dockerfile如下:

1
2
3
4
5
6
7
8
9
10
11
FROM node:12-alpine
RUN echo "Asia/Shanghai" > /etc/timezone \
&& echo "https://mirrors.ustc.edu.cn/alpine/v3.9/main/" > /etc/apk/repositories \
&& npm config set registry https://registry.npm.taobao.org \
&& apk add --no-cache git

VOLUME /build/src
WORKDIR /build
COPY ./build.sh /build

ENTRYPOINT ["/bin/sh", "./build.sh"]

Hello World

总算是弄好了🎉……这是我第四次搭博客了😅,之前的博客都因为某些原因关掉了(其实主要是懒)。在新冠疫情期间,阿里云推出了学生“在家实践”计划,通过学生认证的账号可免费领取一台2核4GB的ECS,于是抓紧机会白嫖了一台

寻思着4GB内存留着不用挺可惜的,那就重新把博客搭一下吧,用来分享一些学习时的笔记,为了防止自己弃坑,还认真地备了个案。先总结一下前三次搭博客都用了些什么技术栈吧。

  • 第一次:基于Jekyll
  • 第二次:自己写博客框架,前端用到了MDUI,后端用到了Flask
  • 第三次:包括这一次,用的都是博客框架Hexo

虽说这一次用的也是Hexo,但相比上次还增加了一个技术栈,那就是Docker。目前整个网站都是运行在Docker里的,用的镜像是caddy/caddy。除了作Web Server,Docker还有一个作用,那就是CI/CD