Tag: ruby在轨道

如何dockerize Ruby on Rails的生产?

我使用Docker为我的开发环境设置了Ruby on Rails,但我不确定此configuration是否适合生产。 目前我使用nginx +独angular兽作为networking服务器,但nginx +乘客或nginx +美洲狮呢? 我告诉你我的docker设置,希望你有一些改进。 泊坞窗,compose.yml web: image: nginx:latest ports: – "80" – "443" links: – "rails" environment: VIRTUAL_HOST: blog.dev.lvh volumes: – ./log/nginx:/var/log/nginx – ./docker/nginx/nginx.conf:/etc/nginx/nginx.conf – ./docker/nginx/sites-enabled:/etc/nginx/sites-enabled – ./docker/nginx/ssl:/etc/nginx/ssl volumes_from: – rails rails: image: mc388/rails:latest environment: RACK_ENV: development RAILS_ENV: development command: bundle exec unicorn -c config/unicorn.rb volumes: – ./:/var/www/html links: – mysql […]

/ etc / hosts中的docker.local主机名未在OSX上为docker计算机parsing(导致rspectesting失败)

我今天有一个错误,我的rspectesting运行良好,直到最后的期望,但是我仍然有一个“数据库连接超时错误”。 这是在本地运行rails,使用docker机器连接到docker内部的postgres实例。 Docker机器指令指导我在/etc/hosts文件中创build一个条目: 192.168.99.100 docker.local 这对于testing本身来说工作得很好,但是接下来的东西(可能是来自DatabaseCleaner的testing套件之后的一些清理步骤)仍然引发了关于超时连接到数据库的错误。 经过大量的调查,debugging,甚至删除和重新创builddocker机器的默认容器之后,我最终将其缩小到如果我用数据库configuration中的实际IP地址replacedocker.local – 它通过。 所以底线 – 一些清理过程没有访问/ etc / hosts定义的docker.local主机名。 这在OSX El Capitan上。

将sphinx和rails与postgresql一起Dockerizing

我想用docker容器来部署我的rails项目。 所以我有他们4:db容器(postgresql),redis容器,sphinx容器,web容器(包含rails应用程序)。 数据库,Redis的和Web容器成功连接,并一起工作很好,但我只是添加了狮身人面像容器,并希望找出如何将它连接到我的networking和数据库容器正确? 你有什么线索吗? 我正在使用docker-compose来实现这一点。 我的docker-compose.yml web: dockerfile: Dockerfile-rails build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' ports: – "3000:3000" links: – redis – db – sphinx environment: – REDISTOGO_URL=redis://user@redis:6379/ redis: image: redis sphinx: dockerfile: Dockerfile-sphinx build: . db: dockerfile: Dockerfile-db build: . env_file: .env_db 我使用狮身人面像引擎的leodido/sphinxsearch图像。

什么是避免铁轨gem冲突的最佳方法

我正在使用“activeadmin”创build一个pipe理工具。 我遇到了“设备”需要更新的gem冲突问题。 因为我们使用的这个“装置”gem很旧,所以不能轻易升级。 什么是解决gem dependency地狱的最好方法? 一个新的项目不应该靠解决旧的gem冲突。 单独的项目应该松散耦合。 这是一个使用docker集装箱的好地方吗? docker上我没有任何经验。 只是想清楚,如果这是一个很好的用户案例docker?

将redis链接到sinatra docker容器的正确方法

我正在写一个基于微型服务的小应用程序,并且在其中有一个redis实例,通过Resque可以使用一些ruby代码/容器。 目前在我的泊坞窗撰写我连接像这样: redis: image: redis:latest ports: – '6379:6379' ruby_worker: image: my_user/my_image:latest links: – redis:db 这工作正常(我只把它命名为:db现在的原因,这是我查找链接时发现的示例)。 在我的ruby代码中,我必须设置我的Resque redis服务器,如: Resque.redis = ENV['DB_PORT_6379_TCP_ADDR'] + ':6379' 但是这似乎并不正确。 它依赖于这个确切的redis名称,如果我必须启动一个不同的redis实例(就像我今天在使用docker云时所做的那样),它不会findredis服务器。 总共我有3个容器(到目前为止)连接到这个redis的resque。 一个小的sinatra前端,和2名工人。 我不是一个铁杆的人,3天前从来没有使用过复苏。 所以很抱歉,如果我错过了一些基本知识。 有没有更好的方法来连接到我的ruby代码中的redis实例? 有没有办法在我的docker-composose中传递redis的名字? 现在我的resque-web容器configuration如下,它似乎工作正常: resque: image: ennexa/resque-web links: – redis:redisserver ports: – "5678:5678" command: "-r redis://redisserver:6379"

Docker – 不能转发交互式s​​hell的端口

在Docker容器中转发端口遇到了很多困难。 首先,我尝试转发现有容器的端口。 然后我意识到这是不可能的。 所以我尝试使用docker run命令(从docker镜像创build一个新的容器)。 docker run -p 8080:8080 -td <image_id> 我使用docker ps命令进行了检查,并在“Ports”标题下显示了这些端口。 但是我在这里使用了-d(在后台运行容器)选项。 所以我猜想它工作。 但我真的需要一个交互式的shell,在这里我想转发一些端口。 基本上我试图在这个容器中运行一个Ruby On Rails应用程序(需要端口3000,3306等),我安装了所有的软件和rails gem等,并在这个交互式shell中启动服务器。 但我不知道如何转发交互式s​​hell的端口。 我尝试了以下内容: docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i <image_id> /bin/bash 这里交互式shell工作,但端口不被转发。 编辑 :我遵循的步骤: $ docker run -p 3000:3000 -p 3001:3001 -p 3306:3306 -p 5432:5432 -t -i 5c62899c063f /bin/bash root@342cf0dfb5a5:/# […]

Docker Sidekiq开始 – 与Puma的Rails应用程序

下面的Dockerfile应该在容器启动的时候启动sidekiq: FROM phusion/baseimage:0.9.18 ENV RUBY_MAJOR "2.0" ENV RUBY_VERSION "2.0.0-p643" ENV RUBYGEMS_VERSION "2.5.2" ENV BUNDLER_VERSION "1.11.2" ENV NODE_VERSION "5.5.0" ENV BOWER_VERSION "1.7.6" ENV APT_PACKAGES " \ git imagemagick \ gcc g++ make patch binutils libc6-dev \ libjemalloc-dev libffi-dev libssl-dev libyaml-dev zlib1g-dev libgmp-dev \ libxml2-dev libxslt1-dev libpq-dev libreadline-dev libsqlite3-dev htop \ " ENV APT_REMOVE_PACKAGES "openssh-server" RUN apt-get […]

在做任何源码(Bundler :: GemNotFound)时,无法find链轮3.6.2

我是docker工人。 我有一个现有的轨道应用程序,我想dockerize它。 请帮助我,我该如何解决这个问题。 我遇到了这个问题。 我运行这个时发布了错误。 redis_1 | 1:M 03 Jul 11:47:39.087 * The server is now ready to accept connections on port 6379 sidekiq_1 | /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/spec_set.rb:92:in `block in materialize': Could not find sprockets-3.6.2 in any of the sources (Bundler::GemNotFound) sidekiq_1 | from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in `map!' sidekiq_1 | from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/spec_set.rb:85:in `materialize' sidekiq_1 | from /usr/local/bundle/gems/bundler-1.10.6/lib/bundler/definition.rb:140:in `specs' sidekiq_1 […]

Docker的Web应用程序:bash会话

我目前正在为使用Ruby on Rails编写的Docker的Web仪表板工作。 我使用的是使用给定的Docker API的https://github.com/swipely/docker-api 。 我想添加function通过正常的bash会话与docker集装箱通信。 等效的docker命令是 docker exec -ti container_name bash 任何人有一些想法如何进入这个Web应用程序bash会话? 某种IO对象或terminal模拟器? 我试图使用给定的exec和attach函数,但没有成功。 通过docker-API执行单个命令也是一个进步。

在使用Docker Compose时设置Rails / Rack环境

我有一个docker-compose环境,如下所示: web: build: . environment: – RAILS_ENV=development – RACK_ENV=development – DOCKERIZED=true env_file: – .env ports: – "3000:3000" volumes: – .:/usr/app links: – redis – db – search – memcache networks: – front-tier – back-tier command: bundle exec rails s -p 3000 -b '0.0.0.0' 在我的.env文件中,我有以下几点: RAILS_ENV=development RACK_ENV=development 问题是,当我尝试使用种子数据库 docker-compose run web bundle exec rake db:setup RAILS_ENV=development […]