什么时候能看懂你们的讨论,应该就是成长了
继续关注这个话题,想知道仅仅代码写的好的人,在国内都怎么样了
@jasl 好像还没到 5 个赞啊,谢谢管理员加精. 不过希望大家也能分享一下啊
谢谢,升级版本试过,还是不行。禁用 spring 这个也不想用,看 issue 最后最后面有人又报了这个问题,复现了好像。整不好的话还是换个数据库了
更新:
昨天弄错了,升级 gem 版本了,升级本地 sqlite, 然后 gem 连接新版本重新安装有效了:
brew install sqlite
gem uninstall sqlite3
gem install sqlite3 -- --with-sqlite3-dir=/usr/local/Cellar/sqlite/3.1x/
binding.pry 这类需要终端和进程状态变化的调试操作,要使用有点违背 Docker 单进程的意图,但也可以实现。我的具体做法是在 docker-compose.yml 或 Dockerfile 中修改 CMD 入口,换一个一直运行的 0 号进程,然后 exec 进入终端,此时的程序终端跟一般状态无异 (已经不依赖 Rails 进程了), 之后启动 Rails 进程,就可以修改代码,进行终端调试了。
你说的很对,docker 给 Rails 开发带来的体验是不好,甚至对于刚接触的人,因为有一个单进程的限制,会觉得没有虚拟机方便,但是这是对后端需要一些高级调试的人来说。现在假如有一个需求,一个系统有多个部分,需要前端,后端以及一些底层运算成员组成,对于前端和底层运算成员,他们没必要本地实现一套 Rails 环境,他们并不关心这个,这里可以用虚拟机来实现,但是虚拟机即使是 vagrant 没有像 Dockerfile 这样使环境完全透明的东西,运维修改起环境没有 docker 方便。
而对于 Rails 后端人员,可以用 Docker 运行前端的一套 node 项目和底层运算成员的一些 Maven 项目,而对于自己的 Rails 项目,如果开发调试不够用了,也可以直接使用本地环境代替,这时候的操作只需要暴露 Node 和其他需要组件的端口,这里实际上可以理解为将其他不关心的系统封装成一个 app 来跑,而这些 app 由 Docker Compose 来管理。当然,后端对于 Rails 环境也是需要的,当环境依赖需要修改时,可以很方便本地在 Docker 中测试好,之后上传新的 Dockerfile, 在下个版本时,让其他工程师一并得到更新。虽然这种需求量不是很多,但用起来就舍不得放了。
楼主还是小白,没有接触到 swarm 多机部署 我现在应用到生产环境,益处主要是统一了环境,没有了曾经阿里云运行良好,然后其他云跑不起来的问题。最后,Docker Compose 是很不成熟。
这个试试先清楚 log 日志,然后复现报错后,再看看日志里发生了什么
#8 楼 @small_fish__ 嗯嗯,好的好的
暂时看,是测试环境下,你修改的 User.first 仍然取到了 fixture 里的 little 用户
然后用 111111 测试,返回了成功,但这个是 http 请求成功,就是说此时密码错误了
第一个截图报错,我之前遇到过,最后是换另一种方式安装 Ruby 解决的 (当时是 rbenv -> RVM)
我机智的改小了一码
另外,因为 Rails 容器正常运行,需要连接 DB 容器并执行 Migrate 操作。
这里是不是应该在所有容器启动之后,再配合 GitLab-CI 这类持续部署工具做接下来的步骤?
因为运用了 Docker 完全封装了环境和源码,很多观念跟 Cap/Mina 工具不一致,是不是应该更换成 GitLab-CI 或 Jenkins 了?
# 后台运行redis容器 docker run --name app_redis -d redis # 后台运行postgres容器, 指定用户名密码 docker run --name app_postgres -e POSTGRES_PASSWORD=password -e POSTGRES_USER=user -e POSTGRES_DB=app_db -d postgres # 后台运行app容器, 环境变量使用.env.docker文件传入, 映射容器的8080端口到本地的8080端口 docker run --env-file ./.env.docker --link app_redis:redis --link app_postgres:postgres -v /var/www/public/uploads:/app/public/public -v /var/log/app:/app/log --name app_web -p 127.0.0.1:8080:8080 -d embbnux/app # 上传assets文件到cdn # docker run --env-file ./.env.docker --link app_redis:redis --link app_postgres:postgres --name app_assets --rm embbnux/app rake cdn:upload_assets # 运行sidekiq容器 docker run --env-file ./.env.docker --link app_redis:redis --link app_postgres:postgres -v /var/www/public/uploads:/app/public/public -v /var/log/app:/app/log --name app_sidekiq -d embbnux/app bundle exec sidekiq -C config/sidekiq.yml
这些docker run ...
的操作可以组织到 docker-compose.yml 配置文件里,通过 Docker Compose 来管理各个容器的衔接和配置,会不会显得更方便一点?
亚飞的演讲很不错,但是视频跟 PPT 不同步啊
现在社区工作各种规范,给管理员点个赞!
下单了