动手搭建代码片段托管服务,可用于随手记录 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.
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

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

file

5年前 评论

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

5年前 评论

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