-
Notifications
You must be signed in to change notification settings - Fork 14
dev_guide
fsword edited this page Mar 1, 2017
·
4 revisions
- Ruby on Rails: Shelter基于RoR,数据库使用 postgresql
- Docker/Compose: Shelter系统中的各服务交付为 Docker 镜像,并使用 Docker Compose 进行组织
- 12 factors: 尽可能遵循 Cloud native 的实践,推崇将研发、测试、运维三种过程进行统一的方法论
- Git/Github: 源码管理基于Git
实际上,由于 Shelter 的开发可以完全在容器中进行,所以开发环境不需要特别设定,只要本机的 docker compose 正常工作即可。
如果要启动 shelter 系统,那么你还要确保 docker 宿主机的80端口没有被占用,否则查看这里——更改proxy的缺省端口-TODO
说明: 本节所有涉及 docker-compose 的命令都在docker-compose 相关命令中有详细解释
- 将项目源码clone到本地(假定是 /home/tom/shelter 目录)
$ cd /home/tom
$ git clone [email protected]:larrow/shelter.git
$ cd shelter
- 修改代码:根据实际需要执行修改
- 构建镜像
$ docker-compose build
- 运行系统
$ docker-compose up -d
- 手工验证:访问
http://<your_docker_host_ip>
,详细说明参见这里 - 如果有错误,重复上述步骤 :-P
- 验证完毕后,提交代码并推送至 github
- github自动触发 travis CI ,如果执行无误可以提交 PR
- 维护者验证后执行合并
基于 docker ,开发可以很容易的建立分布式系统,但是由于代码必须进入容器才能生效,如果按照build-rerun-test
这个过程,会比较浪费时间。
为了便于开发,我们添加了一个docker-compose-development.yml
文件,在开发阶段,程序员可以使用这个文件来驱动 docker compose ,它启动的 Rails 应用是可以支持代码热更新的。
如何启用
-development
文件是配合 docker-compose 使用的,只要在 docker-compose 命令后附加一个 -f 参数即可,例如:$ docker-compose -f docker-compose-development.yml up -d
系统将会按照开发模式的描述规格启动,其余 docker-compose 命令以此类推。
为了方便起见,建议你使用一个
alias
,缺省附加-development
文件,用户可以在自己的 .bashrc 文件中添加这句话——alias fig='docker-compose -f docker-compose-development.yml'
用这种方式启动shelter以后,开发者就可以一遍修改代码,一遍看运行效果了
两个docker-compose文件有什么不同 和标准
docker-compose.yml
相比,这个-development
文件主要有以下变化:
- 添加 volume 映射,使用当前目录的新代码(而不是镜像中的代码)启动Rails应用。
- 设定环境变量 RAILS_ENV 的值为 development (否则缺省为 production),激活 Rails 的开发模式
- 开启 tty 和 stdin ,便于通过 docker attach 进入 pry 的断点