Tag: ruby在轨道

Docker中的debuggingrails应用程序使用Intellij / Rubymine

我开始使用Docker开发rails开发。 目前,我遵循一些教程来设置开发环境。 一切正常。 (用于构build,运行)。 但是现在,我想为Rubymine设置Ruby Remote SDK,所以我在Docker容器上安装了SSH(ruby容器;我安装了SSH,因为它需要设置REMOTE SDK)。 这里是Dockerfile FROM ruby:2.2.0 # Install package RUN apt-get update -qq && apt-get install -y \ build-essential \ libpq-dev \ nodejs \ openssh-server # Setting sshd RUN mkdir /var/run/sshd RUN echo 'root:root' | chpasswd RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed -ri 's/UsePAM yes/#UsePAM yes/g' /etc/ssh/sshd_config […]

callback(或相当于)容器瓦特/ Rails应用程序完成启动时?

我有一个docker容器包含一个轨道应用程序。 运行容器启动一个类似如下的脚本: https : //github.com/defunkt/unicorn/blob/master/examples/init.sh ,它执行一些繁忙的工作,然后伸出一个类似于这个unicorn.rb脚本: https : //github.com/defunkt/unicorn/blob/master/examples/unicorn.conf.rb 。 我有一个clojure的networking应用程序,可以告诉这个容器运行。 这样做的请求是非阻塞的,当rails应用程序准备好接收请求时,站点的用户将以某种方式得到通知。 我可以想到各种hacky的方式来做到这一点,但有没有一种惯用的方式让容器让我知道什么时候麒麟铁轨应用程序准备好接收Web请求? 。 我想让它在我的应用程序中触发一些callbackurl,但我打开其他选项。 谢谢!

dokku错误:无法find应用程序的实体

尝试重新启动服务器后重新启动dokku。 我所做的一切(redis:链接,dokku部署,从我的电脑推送新版本的应用程序..)失败,无法find实体的错误信息。 2014/07/16 09:02:45 Error: Could not find entity for domain_freek 我觉得这可能与Docker容器或图像有关,所以我尝试重新启动应用程序的最新docker容器,但没有骰子。 Dokku仍然给我一个无法find实体的错误。 root@domainfreek3:/home/dokku/domain_freek# docker restart `cat /home/dokku/domain_freek/CONTAINER` b5823fa2703f root@domainfreek3:/home/dokku/domain_freek# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5823fa2703f dokku/domain_freek:latest /bin/bash -c '/start 6 minutes ago Up 10 seconds 5000/tcp compassionate_tesla f6d165a32e92 2c035b41f308 /bin/bash -c '/start 27 minutes ago Up 25 minutes 5000/tcp […]

docker工作人员如何解释CMD?

初始的尝试 我在我的rails项目中有一个Dockerfile,它以: CMD ["bundle", "exec", "unicorn", "-D", "-c /usr/src/app/config/unicorn.rb"] 当我运行一个容器时,我得到: /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/lib/unicorn/configurator.rb:75:in `read': No such file or directory @ rb_sysopen – /usr/src/app/config/unicorn.rb (Errno::ENOENT) from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/lib/unicorn/configurator.rb:75:in `reload' from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/lib/unicorn/configurator.rb:68:in `initialize' from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:100:in `new' from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/lib/unicorn/http_server.rb:100:in `initialize' from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/bin/unicorn:126:in `new' from /usr/local/lib/ruby/gems/2.1.0/gems/unicorn-4.8.3/bin/unicorn:126:in `<top (required)>' from /usr/local/bin/unicorn:23:in `load' from /usr/local/bin/unicorn:23:in `<main>' master failed to start, check stderr log for […]

强制安装软件包 – 无需重写Gemfile.lock

在构buildDocker镜像之前,我正在使用bundle package将gem写入供应商/caching。 然后运行RAILS_ENV=docker_env bundle install –local –without development test在我的Dockerfile中没有RAILS_ENV=docker_env bundle install –local –without development test来安装运行没有问题的caching的gem。 然而,当我试图bundle exec …或任何与束捆绑它抱怨失踪的gem,但它抱怨的gem是在开发和testing组,它不应该试图加载。 它们是在Gemfile.lock中指定的,但是我的理解是运行bundle install –without development test应该将它们从Gemfile.lock中移除。 我可以从修复问题的Gemfile.lock中手动删除它们,但这显然不是一个实用的解决方法。 我尝试将–clean标志附加到软件包安装,但是这并没有帮助。 任何想法为什么开发/testinggem没有被从Gemfile.lock中删除?

厨师容器+厨师保险库

我试图在docker上运行几个厨师食谱。 厨师容器接缝是一个很好的解决scheme。 在食谱中,我使用来自encryption的data_bags通过chef-vault的凭证。 厨师 – 容器与厨师穹顶一起已经有了解决scheme吗?

与Docker上的sidekiq工作者分离时钟进程

我目前正致力于将我的环境从Heroku移出,部分应用程序运行一个时钟进程,启动一个Sidekiq后台作业。 据我所知,Sidekiq由一个客户端和一个服务器组成,客户端发送作业到Redis队列,服务器取出队列的请求并处理它们。 我现在试图将我的应用程序拆分到Docker上的以下容器中: – Redis容器 – 时钟容器(使用Clockwork gem) – 工作者容器 – Web应用程序容器(Rails) 但是,我不知道如何分裂这个Sidekiq服务器和客户端。 本质上,时钟容器需要在其上运行Sidekiq,以便客户端每隔一段时间就可以将作业发送到Redis队列。 但是,工作容器也应该运行Sidekiq(服务器),以便他们可以处理作业。 我认为分割不同容器之间的责任应该是很有可能的,因为Heroku允许你在不同的dynos上拆分它。 我可以想象做到这一点的一种方法是分配时钟容器来取消一个不存在的队列,这样它就不会从队列中取出任何作业,然后设置工作人员从一个存在的队列中取出。 然而,这对我来说似乎并不是最理想的方式,因为它仍然会在这个不存在的队列中检查新的作业。 任何提示或指导我如何开始这个呢?

运行rake db时出现错误:在Docker中创build

我是Docker中的新成员,然后在运行Ruby on Rails和Postgresql的官方教程。 当我运行docker-compose up但是当我尝试命令docker-compose run web rake db:create ,我得到了一个FATAL: role "root" does not exist错误FATAL: role "root" does not exist 。 database.yml default: &default adapter: postgresql encoding: unicode pool: 5 host: db development: <<: *default database: myapp_development test: <<: *default database: myapp_test production: <<: *default database: myapp_production username: postgres password:

连接时,Redis客户端超时

我有一个在ElastiCache上运行的Redis集群。 多个进程连接到Redis群集。 每个进程都在一个Docker容器中。 进程并不完全相同 – 我有一个web进程,一个worker进程等等。 在正常运行几天之后,我的一些web进程在连接到Redis时开始超时。 当我ssh入受影响的web容器,并尝试通过redis-cli到达群集,我的连接到群集超时。 这告诉我,这个问题影响整个容器,而不仅仅是web进程。 当我从任何其他容器使用redis-cli ,我连接没有问题。 我的web进程根据需要创build新的连接,并在闲置很长一段时间时closures旧连接。 我的猜测是任何给定的Docker容器都可以在达到某种限制之前打开一定数量的连接。 几天后,我的web容器达到了这个限制。 任何想法如何去解决这个问题? – 还有一个细节:出于某种原因,重置我的Redis集群可以解决所有web容器中的问题。 也许Redis服务器限制了从给定的IP地址打开多less个连接?

卡夫卡用docker使用kafka-rb设置客户端

对卡夫卡来说,我是完全陌生的,而且我也遇到了麻烦。 我使用docker-compose为docker设置了“wurstmeister / kafka-docker”: zookeeper: image: wurstmeister/zookeeper ports: – "2181:2181" kafka: image: wurstmeister/kafka ports: – "9092:9092" links: – zookeeper:zk environment: KAFKA_ADVERTISED_HOST_NAME: 192.168.59.103 # KAFKA_AUTO_CREATE_TOPCIS_ENABLE: 'true' KAFKA_CREATE_TOPICS: "events:1:1" volumes: – /var/run/docker.sock:/var/run/docker.sock 对于生产者和消费者,我使用ruby“kafka-rb”。 制片人: require 'kafka' producer = Kafka::Producer.new({ host: "192.168.59.103", port: 9092, topic: "events" }) 1000000.times do |i| message = Kafka::Message.new("Message #{i}") producer.push(message) end 消费者: 要求'kafka' […]