Tag: ruby在轨道

为Docker部署Rails应用程序

阅读许多资源,但从部署的angular度来看仍然困惑于Docker。 试图找出在Docker环境中Rails应用程序的最佳实践,特别感兴趣的是如何解决以下问题: 1)访问之前部署的容器中的日志,可以停止/销毁。 rsyslog现在/ syslog的? 2)回滚部署有多容易? 就请求丢失而言,这是否安全? 你可以向图像发送USR2 + QUIT信号,但是保持优雅地与另一个图像开始新的主/从工作? 带有多个图像端口的Nginx上游? 3)如何configurationAnsible或替代品的Dockerfile? 否则Dockerfile bash风格的缺陷是什么? 4)通过Docker访问Rails控制台的最佳方式是什么?

在Windows上的Docker得到“无法findGemfile”

我试图学习使用Windows作为主机操作系统的Docker,使用Docker Hub的 Rails镜像创build一个容器。 我用下面的内容创build了一个Dockerfile和一个空的Gemfile,但是我仍然收到错误“Could not locate Gemfile”。 Dockerfile FROM rails:4.2.6 我使用的命令如下(不理解他们实际上做了什么): ju.oliveira@br-54 MINGW64 /d/Juliano/ddoc $ docker build -t ddoc . Sending build context to Docker daemon 4.608 kB Step 1 : FROM rails:4.2.6 —> 3fc52e59c752 Step 2 : MAINTAINER Juliano Nunes —> Using cache —> d3ab93260f0f Successfully built d3ab93260f0f SECURITY WARNING: You are building a […]

如何防止在docker容器中传递给ruby应用程序的ENVvariables

keys.env包含私钥: KEY="—–BEGIN PRIVATE KEY—–\nBADANBgkqhki……xjiWsX7Qjoh8XH8nAECgYEAkCNIy1eICdUUt6HgV\nnEGKpwDETJTIJdmW5MlOzsURI/RSnE2Qas/k758isGLaA4m9dZJoxuP/pCfwcvLj\nwmjVBPdTTNF6ADgor6ZVIp6os5wIIurZH7f8yXaggTEyk5r8K6qxz9t/D\n4FaPDsZ2icg0N5i2y/2Sa0w=\n—–END PRIVATE KEY—–\n" (KEY的值应该用引号括起来,因为它包含\ n) docker-compose.yml包含env_file参数: version: '2' services: testenv: image: ruby:2.4-slim env_file: – ./keys.env 我用ruby app运行容器: docker-compose run testenv 并尝试使用ENV ['KEY']variables: irb(main):001:0> ENV['KEY'] => "\"—–BEGIN PRIVATE KEY—–\\nBADANBgkqhki……xjiWsX7Qjoh8XH8nAECgYEAkCNIy1eICdUUt6HgV\\nnEGKpwDETJTIJdmW5MlOzsURI/RSnE2Qas/k758isGLaA4m9dZJoxuP/pCfwcvLj\\nwmjVBPdTTNF6ADgor6ZVIp6os5wIIurZH7f8yXaggTEyk5r8K6qxz9t/D\\n4FaPDsZ2icg0N5i2y/2Sa0w=\\n—–END PRIVATE KEY—–\\n\"" 该variables是逃脱,但我需要干净的private_key。 我还没有在Docker文档中find答案。 我看到两个工作的解决scheme,但没有一个在我看来是对的。 将private_key存储在.env文件中,并且不带引号。 应用程序中的模块将对此值进行解码。 在应用程序的Unescape价值(像这样最好的方法来逃避和unescapestring在Ruby? ) 有没有办法通过Docker的内置function来解决这个问题?

当用rails在本地编码时,你需要docker吗?

我刚刚开始与stream浪者/ ansible然后docker工作部署。 我还没有很好的面向Docker,我已经阅读了几个教程。 有一点让我感到困惑的是,当我在本地开发时,这些变化并没有反映出来,尽pipe这是有意义的,因为它正在运行一个映像。 我的问题是,有没有一种方法可以让我的更改立即通过浏览器刷新反映出来,就像传统的没有docker的rails开发一样。 我可以看到这是一个痛苦,不断build立和运行当地最新的形象,当我还在编码。

如何在保留所有者和权限的同时从数据容器装载卷?

我正在使用Fig并尝试使用数据卷容器在Rails Web服务器和另一个容器中运行的Resque工作器之间共享上传的文件。 为此,数据卷容器定义了用于共享这些文件的/rails/public/system卷。 Rails和Resque进程作为rails用户在各自的容器中运行,这两个容器都是基于markb/litdistco映像的。 一起fig.yml看起来像这样: redis: image: redis:2.8.17 volumes_from: – file web: image: markb/litdistco command: /usr/bin/start-server /opt/nginx/sbin/nginx ports: – 80:8000 – 443:4430 environment: DATABASE_URL: links: – redis volumes_from: – file worker: image: markb/litdistco command: /usr/bin/start-server "bundle exec rake environment resque:work QUEUE=litdistco_offline RAILS_ENV=production" environment: DATABASE_URL: links: – redis volumes_from: – file file: image: markb/litdistco command: echo […]

在Docker中运行Sidekiq – 处理Docker容器的终止?

我正在使用Rails + Sidekiq + Docker。 我打算在Docker容器中部署我的Sidekiq进程。 我的工作是相当长时间的运行,并且具有不可预知的持续时间(基本上,它正在执行对数据库的长时间运行的查询 – 可能长达10-15分钟) 当我杀死我的docker集装箱(作为新部署的一部分)时,我如何告诉Sidekiq优雅地停下来,以避免现有的工作中断? 有没有人以前面临类似的情况。 如果是这样,你如何解决这个问题?

Dockerfile:尝试安装ruby-build时,权限被拒绝

我试图在我的Dockerfile中安装ruby-build作为非root用户,但是我得到了拒绝权限的错误。 我怎样才能让部署用户访问呢? 错误 mkdir: cannot create directory `/usr/local/share/ruby-build': Permission denied Dockerfile FROM centos:6.6 RUN yum update -y RUN yum install git openssl-devel openssh-server sudo openssl readline-devel readline zlib-devel zlib libxml2-devel libxml2 libxslt-devel libxslt nginx tar gcc libaio libaio-devel -y RUN rpm -Uvh https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-12.5.1-1.el6.x86_64.rpm RUN sed -i -e "s/Defaults requiretty.*/ #Defaults requiretty/g" /etc/sudoers RUN mkdir -p […]

Docker容器不能填充rails应用程序的SECRET_TOKEN envvariables

我正在关注https://semaphoreci.com/community/tutorials/dockerizing-a-ruby-on-rails-application从轨道docker图像创build一个示例轨道应用程序。 想法是docker化铁路应用程序。 我在dock应用程序的根目录下创build了一个.drkiq.env文件,按docker推荐的KEY = value格式,如下所示 SECRET_TOKEN=asecuretokenwouldnormallygohere WORKER_PROCESSES=1 LISTEN_ON=0.0.0.0:8000 DATABASE_URL=postgresql://drkiq:yourpassword@postgres:5432/drkiq?encoding=utf8&pool=5&timeout=5000 CACHE_URL=redis://redis:6379/0 JOB_WORKER_URL=redis://redis:6379/0 我正在从我的docker = compose.yml文件读取环境文件(也驻留在应用程序根目录中) postgres: image: postgres:9.4.5 environment: POSTGRES_USER: drkiq POSTGRES_PASSWORD: yourpassword ports: – '5432:5432' volumes: – drkiq-postgres:/var/lib/postgresql/data redis: image: redis:3.0.5 ports: – '6379:6379' volumes: – drkiq-redis:/var/lib/redis/data drkiq: build: . links: – postgres – redis volumes: – .:/drkiq ports: – '8000:8000' env_file: – .drkiq.env sidekiq: […]

在Phusion Passenger Docker镜像上出现错误“在任何源中找不到rake-10.5.0”

我正在尝试使用Docker和Phusion Passenger Ruby基本映像来部署Rails应用程序,但每当我尝试从浏览器访问应用程序时,都会遇到以下错误: web_1 | [ 2016-02-08 04:18:44.6861 31/7ff292141700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /home/app/webapp: An error occurred while starting up the preloader. web_1 | Error ID: d3103e16 web_1 | Error details saved to: /tmp/passenger-error-EwymlW.html web_1 | Message from application: <p>It looks like Bundler could not find a gem. Maybe you didn't […]

每当gem'加载命令失败:耙'

寻找一些帮助。 我正在运行一个rails应用程序(v3.2.5)随时gem(v0.9.7)和rake (v11.2.2)。 我也在docker的容器图像做这个ruby:2.3 ( cron被安装和bundle install被运行) 这是我的schedule.rb set :environment, ENV['RAILS_ENV'] every '*/2 9,10,11,12,13,14,15,16 * * 1-5' do rake "import_csv", output: {:error => 'log/import_csv_errors.log', :standard => 'log/import_csv.log'}' end 注意 RAILS_ENV设置在容器启动到development 这是我的构build后的容器( crontab -l )上的cron作业: # Begin Whenever generated tasks for: /usr/src/app/config/schedule.rb */2 9,10,11,12,13,14,15,16 * * 1-5 /bin/bash -l -c 'cd /usr/src/app && RAILS_ENV=development bundle exec […]