Tag: ruby在轨道

在Docker上运行Rails时,URL会生成错误的主机和端口

我有一些与Docker Compose粘合在一起的服务。 主要的服务是在自己的容器中的Rails应用程序。 它位于一个Nginx代理的后面,也在它自己的容器中。 (其他服务也在Nginx之后,但这不重要。) 在docker-compose.yml ,我将名称web分配给了Rails服务。 因此, web是Dockernetworking中的容器的主机名。 Rails容器公开端口3000.所以我的Nginx反向代理configuration看起来像这样: location / { proxy_pass http://web:3000; } 除了一个问题,这个工作很好。 从Rails应用程序的angular度来看,所有的请求都是web:3000 。 因为Rails根据请求的主机名和端口生成内部URL,所以在响应中我最终得到了web:3000 URL。 例如,如果我把它放在一个模板中: <%= link_to 'Admin', admin_url %> 我得到这在呈现的HTML: <a href="http://web:3000/admin">Admin</a> 我明白为什么会发生这种情况,但我不确定解决问题的最佳做法。 如果我可以避免的话,我宁愿不把一个端口和主机名硬编码到Rails代码中。 这似乎是一个普遍的问题与Docker和Rails,所以我猜别人遇到了它。 想法? 编辑。 我解决了部分问题,让Nginx把原来的主机名传递给Rails,像这样: location / { proxy_set_header Host $host; proxy_pass http://web:3000; } 但是,Rails仍然没有看到外部端口或协议( http vs https )。 编辑2.根据评论的要求,这里是docker-compose.yml 。 version: "3.2" services: […]

Rails资源在MacOX Docker上非常慢

我注意到资产请求在我的Rails应用程序上非常慢。 当卷在docker映像中时,大约需要20 ms来获取资源文件。 当我启动容器和装载文件时,需要大约400毫秒的时间来获取它们! Docker文件系统很慢,但是rails应用的启动时间在两种情况下都差不多,所以没必要这样做。 你有什么想法吗?

无法从Docker容器内连接到Redis(Redis :: CannotConnectError)

我有一个Jenkinspipe道,它为Docker容器内的Sinatra应用程序运行所有testing。 这是Pipeline的样子: #!/usr/bin/env groovy pipeline { agent { docker { image 'ruby' args '-u root -v /root/.ssh:/root/.ssh' } } stages { stage('Build') { steps { echo 'Building…' sh 'bundle install' } } stage('Test') { steps { echo 'Testing…' sh 'rspec spec' } } stage('Deploy') { steps { echo 'Deploy…' sh 'cap staging deploy' } } […]

我无法使用docker和乘客访问我的sinatra webapp url

我必须学习如何使用docker,以及如何dockerize一个sinatra webapp。 我按照这个教程: http : //coding.jandavid.de/2016/01/22/dockerizing-sinatra/ 我现在在本教程的最后一节,即运行我的应用程序的url如下: http : //192.168.99.100 : 4567/ ,但它不工作。 首先,我对本教程的部分内容有一些疑问。 在.conf文件中,他使用以下行passenger_ruby /usr/bin/ruby2.2; 因为我使用的Ruby 2.4.1版本,我写了这一行代码passenger_ruby /usr/bin/ruby2.4; 。 那就对了? 这条线是什么意思? 在Dockerfile中,他使用了下面一行FROM phusion/passenger-ruby22:0.9.18他写了一个特定的版本,我需要使用下面的这一行FROM phusion/passenger-ruby24因为我使用的是ruby 2.4.1,但是我不知道我是否需要指定一个版本。 当我构build图像,所有作品完美,当我开始我的应用程序docker run -p 4567:80 vcheloud/sinatra-example似乎工作正常。 但是,当我尝试运行http://192.168.99.100:4567/它不工作。

在heroku中部署本地开发dockerized应用程序

我有一些麻烦部署我的本地开发dockerized Rails应用程序在heroku 我跟着这个教程: heroku容器registry 当我在nav中heroku open时,我得到了“应用程序错误” 我试着看看日志,说Heroku错误N 10 2017-10-08T12:43:34.322045+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=frozen-basin-18474.herokuapp.com request_id=a1f7c8c1-a294-4af9-ae51-2fa904978ea0 fwd="218.249.50.34" dyno= connect= service= status=503 bytes= protocol=https 2017-10-08T12:43:35.826064+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=frozen-basin-18474.herokuapp.com request_id=b6f9b1bf-8e15-4bf3-9781-53f3d56bf8f2 fwd="218.249.50.34" dyno= connect= service= status=503 bytes= protocol=https

LoadError:无法加载这种文件 – 机架/ deflater在没有RVM的Docker中

我正在尝试Dockerize我的Rails / Sidekiq应用程序,并得到: LoadError: cannot load such file — rack/deflater 21:11:48 sidekiq.1 | /usr/local/bundle/gems/activesupport-4.2.10/lib/active_support/dependencies.rb:274:in `require' 当通过工头启动Sidekiq时 它适用于本地运行应用程序,但不在Docker容器中。 我相当确定它有一个事实,我有RVM本地安装,但不是在Docker镜像,因为我只是使用ruby:2.4.2图像。 那么,也许我的代码正在做一些必要的假设,安装RVM? 我不确定。

不能在docker上用ruby / sinatra安装postgres

我正在尝试使用docker做一个tesseract api,但是在安装bundle的时候,我得到这个错误: Fetching data_mapper 1.2.0 Installing data_mapper 1.2.0 Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /var/lib/gems/2.3.0/gems/do_postgres-0.10.17/ext/do_postgres /usr/bin/ruby2.3 -r ./siteconf20171013-5-6l2bdy.rb extconf.rb checking for main() in -lpq… yes checking for libpq-fe.h… yes checking for libpq/libpq-fs.h… yes checking for postgres.h… no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack […]

从ruby调用命令不工作在泊坞窗图像

我创build了一个docker镜像,并在此镜像上安装了tesseract,并使用这个 docker文件和同一个repo中提供的脚本。 然后,我添加了我自己的小ruby应用程序,以便我可以发送图像,并得到结果返回: require_relative 'bundle/bundler/setup' require 'sinatra' require "json" require 'sinatra/base' require "sinatra/activerecord" require 'sinatra' require 'fileutils' require "carrierwave" require 'carrierwave/datamapper' require "carrierwave/orm/activerecord" require_relative 'models/image' require_relative 'data_mapper_setup' set :protection, except: [ :json_csrf ] port = ENV['PORT'] || 8080 puts "STARTING SINATRA on port #{port}" set :port, port set :bind, '0.0.0.0' CarrierWave.configure do |config| config.root = […]

如何在GCP上使用Rails自定义运行时?

我正在试图dockerize教程书架应用程序。 该应用程序本地运行正常,但部署到GCP后,我只是得到一个502错误的网关错误,并在日志中没有消息。 这些是相关的文件: app.yml runtime: custom env: flex entrypoint: bundle exec rails s -p 8080 -b '0.0.0.0' env_variables: RAILS_ENV: production POSTGRES_USER: postgres POSTGRES_PASSWORD: secret_password POSTGRES_DATABASE: postgres POSTGRES_SOCKET_PATH: /cloudsql/my_connection_name beta_settings: cloud_sql_instances: my_connection_name Dockerfile FROM ruby:2.3.3 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir -p /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD […]

如何将ruby应用程序添加到现有的Ubuntu Docker镜像

我一直在尝试和失败了一段时间,现在我的ruby应用程序添加到tesseract运行时环境泊坞窗容器,但我的理解还不够,因为当我已经成功地build立应用程序仍然不能调用tesseract( sh: command not found: tesseract )从命令行。 或者在构build中,它不会执行gem install bundler ,或者在安装Postgres时失败。 我想要实现的是一个简单的API,我可以上传图像,通过命令行使用图像magick脚本进行处理,然后通过命令行使用tesseract提取文本并以JSON格式传回。 我有部分工作,但我现在正在努力让他们连接,现在正在亏本做什么。 我真的很感激有人指着我如何做到这一点的正确方向,涉及到的步骤,任何真正的事情,因为我觉得我在结合这两个项目时失去了一些根本性的东西。 我最好和最接近的尝试是在这里,但sh: command not found: tesseract 。 %x[ tesseract #{file} –psm 6 resultsFile.txt ]行失败。 任何帮助将是伟大的。