动手搭建代码片段托管服务,可用于随手记录 Snippet

snibox/snibox 是一款使用 Ruby on Rails + Vuex 编写的代码片段托管服务。对于一线程序员来说,经常会接触到大量的代码片段(Snippet),上传到 Gist 无法完全 Private,而 Snibox 则是个不错的选择。

效果

另外,该项目还有个 在线 Demo,由于托管于免费的 Heroku 服务,所以首次访问可能需要大概 30 秒时间启动。

部署

Snibox 官方提供了一套 Docker 部署方案,包括 dockerfile、编排各项服务依赖的 docker-compose.yml 以及简易的 Setup 脚本;你可以在 snibox/snibox-docker 下载到:

git clone

这里我使用 Git 将该仓库直接克隆,方便与远端同步。

在 README.md 文件内,它提供的启动命令是这样的:

./bin/setup
./bin/start

对于不明不白的脚本,我在执行之前都有先看代码的习惯,以免造成一些未知的影响(例如安装系统全局依赖、修改外部文件等)。

自从使用 Docker 之后,对所有的一键脚本都产生了莫名的恐惧和排斥?。

于是经过观察发现,bin/start 内的脚本只有一行:

docker-compose up

没什么猫腻 —— 依照 docker-compose.yml 的配置启动容器。再来看 bin/setup

# ...
echo "Copy .env.sample to .env:"
# ...
echo -e "\nInject secret key:"
# ...
echo -e "\nPull images:"
# ...
echo -e "\nCreate database:"
# ...
echo -e "\nRun migrations:"
# ...
echo -e "\n${GREEN}Setup completed!${NC}"

我摘选了一部分展示,从以上代码中大概可得知:该脚本主要帮我们执行了以下任务:

  • 复制 .env.sample(类似 Laravel 的 .env.example 文件)到 .env
  • 写入 Secret Key(类似 Laravel 的 php artisan key:generate 命令)。
  • 拉取 Docker 镜像。
  • 创建数据库并执行迁移(类似 Laravel 的 php artisan migrate)。

看起来还是十分有帮助的,虽然我觉得写成辅助脚本不合适,而应该打包在 Docker 镜像内。

最后,再来看看 docker-compose.yml,最需要注意的是:

services:
  frontend:
    image: snibox/nginx-puma:1.13.8
    ports:
      - "8000:80" # 将镜像内 80 端口映射到宿主机 8000 端口
# ...

可通过修改 8000 为其它值来改变 Snibox 的访问端口,注意避免冲突。

最后,我们需要做的就是执行配置脚本并启动即可。

bin/setup
docker-compose up

个人更加倾向于使用原生的 docker-compose up,如需后台运行,则携带 -d 选项即可。

结语

该仓库暂时还存在一些小问题,目前我已经提交 PR:

本作品采用《CC 协议》,转载必须注明作者和本文链接
Former WinForm and PHP engineer. Now prefer Golang and Rust, and mainly working on DevSecOps and Kubernetes.
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 2

这是什么问题
ERROR: relation "users" does not exist at character 566

file

6年前 评论

@lovecn 首先,提问前请先阅读《提问的艺术》,提供可以预期目标、实际表现、复现的环境和步骤;其次,技术类问题应当到 GitHub 项目页提交 Issue,而非在推荐文章内回复评论。

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
67
粉丝
592
喜欢
1236
收藏
1136
排名:13
访问:32.4 万
私信
所有博文
社区赞助商