Atualização: Em vez de girar o meu trabalhador de resque pelo comando docker (para teste), em vez disso, matei todos os meus contêineres com o figo kill, adicionei à configuração do figo e executei o figo. Isso funcionou e todos os meus contêineres foram capazes de funcionar em harmonia. Isso me leva a outra questão - quando você executa o figo, ele aloca toda a memória disponível? Evitando assim que você execute outros contêineres, fora da janela de encaixe?
Estou provisionando agora um servidor de teste usando o Docker e estou com um erro estranho ao tentar iniciar um trabalhador do ruby. O servidor que estou usando é um Linode de US $ 20 com 2 GB de RAM e 2 núcleos de CPU.
Estou executando contêineres nginx, unicorn, mysql, redis e elasticsearch neste VPS usando o Fig sem nenhum problema:
ONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a04cce025794 dockerfile/nginx:latest "nginx" 21 hours ago Up 21 hours 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp arthouse_nginx_1
607139f9ba16 rails:latest "/bin/bash -l -c 'cd 21 hours ago Up 21 hours 3000/tcp, 0.0.0.0:49222->8080/tcp arthouse_app_1
6274f8fe5dc0 dockerfile/elasticsearch:latest "/elasticsearch/bin/ 21 hours ago Up 21 hours 0.0.0.0:49220->9200/tcp, 0.0.0.0:49221->9300/tcp arthouse_elasticsearch_1
55d68c470ce5 dockerfile/redis:latest "redis-server /etc/r 21 hours ago Up 21 hours 0.0.0.0:49219->6379/tcp arthouse_redis_1
50635616ddaa mysql:latest "/entrypoint.sh mysq 21 hours ago Up 21 hours 0.0.0.0:49218->3306/tcp arthouse_database_1
Estou tentando ativar outro contêiner do Rails que executará um trabalhador do Resque:
docker run -it --link arthouse_elasticsearch_1:elasticsearch --link arthouse_redis_1:redis --link arthouse_database_1:db rails /bin/bash
Quando eu lanço meu contêiner e tento executar o Resque, recebo um erro de alocação de memória:
root@741f3a425908:~/rails# bundle exec rake environment resque:work VERBOSE=true QUEUE=*
Digest::Digest is deprecated; use Digest
Amazon Web Services Initialized.
Digest::Digest is deprecated; use Digest
Digest::Digest is deprecated; use Digest
---- Redis Initialization ----
Connecting to 172.17.0.194 on 6379 in the development environment
Redis is initialized.
*** DEPRECATION WARNING: Resque::Worker#verbose and #very_verbose are deprecated. Please set Resque.logger.level instead
Called from: /root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/resque-1.25.2/lib/resque/worker.rb:746:in 'verbose='
/root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/resque-1.25.2/lib/resque/tasks.rb:16:in 'block (2 levels) in <top (required)>'
/root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in 'call'
/root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:240:in 'block in execute'
/root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in 'each'
/root/.rbenv/versions/2.1.4/lib/ruby/gems/2.1.0/gems/rake-10.3.2/lib/rake/task.rb:235:in 'execute'
*** Starting worker 741f3a425908:171:*
WARNING: This way of doing signal handling is now deprecated. Please see http://hone.heroku.com/resque/2012/08/21/resque-signals.html for more info.
*** Registered signals
*** Running before_first_fork hooks
*** Checking mailer
*** Found job on mailer
*** got: (Job{mailer} | CustomerMailer | ["customer_registered", 2])
*** resque-1.25.2: Processing mailer since 1416336015 [CustomerMailer]
*** Running before_fork hooks with [(Job{mailer} | CustomerMailer | ["customer_registered", 2])]
*** Failed to start worker : #<Errno::ENOMEM: Cannot allocate memory - fork(2)>