Docker Hub 根据 GitHub Tags 自动构建带版本号镜像

自从去年买了一个蜗牛矿渣当作 NAS 开始,我就在折腾 NAS 这条路上越走越远。在 NAS上折腾软件和服务最方便的就是通过 docker 部署。所以能找到 docker 镜像的软件,我绝对不会自己折腾安装过程。当然有些时候没有办法找到现成的 docker 镜像,那就自己动手构建镜像。 众所周知,我们可以通过 Docker Hub 的自动化构建存放在 GitHub 上某个 branch 的代码。每当我们 git push 代码到 GitHub 就会触发一次 Docker Hub 构建一个新版本。 但是我最近发现一个问题,就是每次构建出来的镜像都是 latest 版本,没有留下历史版本的镜像,这就很不方便。比如我新构建的镜像有问题,但是没办法立刻回退到上一个版本的镜像,除非我把代码改回去再构建一次,这事儿听起来就很不科学。 当然 Docker Hub 也可以根据 GitHub 的特定 Tag 来自动构建镜像。难道我每次在 GitHub 创建一个新的 Tag 都要在 Docker Hub 上创建一条新的构建规则吗?这事儿听起来也挺蠢的。 有没有办法当我在 GitHub 创建一个任意版本号的 Tag 的时候,Docker Hub 这边都自动根据这个 Tag 的版本号,自动构建一个对应版本号的镜像呢?答案当然是有的,Docker Hub 的自动构建规则支持表达式匹配 Tag。 我们可以新增一条如下的自动构建规则: Source Type Source Docker Tag Tag /^v([0-9]+)....

2020-05-13 · 1 min · 白熊

Docker 部署 pyspider 踩坑实录

最近在倒腾 pyspider,不得不说这个爬虫框架用起来真的很方便。从编写调试到部署一条龙服务, 对于我这种 Scrapy 苦手来说,简直就是救星。另外 pyspider 还提供了 Docker 镜像,通过 Docker 部署省去了安装依赖的麻烦。不过我实际根据官方文档尝试 Docker Compose 部署的时候还是遇到了一点小麻烦,搜索折腾了一番之后总算弄好了,这里做个记录。 ImportError: No module named MySQLdb 执行 docker-compose up 的时候,报了这个错误,解决方法是安装 MySQL-python。 # Dockerfile FROM binux/pyspider:latest RUN pip install MySQL-python 这里大家可以自己通过上面的 Dockerfile build 一个新的镜像,或者也可以直接使用我上传的镜像kuma1430/pyspider。然后把官方的 docker-compose.yml 里的 binux/pyspider 换成你创建的镜像名或者 kuma1430/pyspider。 Authentication plugin ‘caching_sha2_password’ cannot be loaded 通过上面安装 MySQL-python,我们解决了找不到 MySQLdb 的问题,但是新的问题出现了: sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (2059, "Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory") (Background on this error at: http://sqlalche....

2019-03-04 · 1 min · 白熊