当我尝试将我的应用部署到Bluemix时,我收到以下错误。我的manifest.yml
文件如下所示。
applications:
- path: .
memory: 512M
instances: 1
domain: mybluemix.net
name: KnowYourBrand
host: kyb
command: bundle exec rake db:setup && bundle exec rails s -p $PORT
disk_quota: 1024M
services:
- Personality Insights-n2
- Tone Analyzer-uu
- Insights for Twitter-bt
- kybSQLDB
- AlchemyAPI-tw
buildpack: https://github.com/ibmdb/db2rubybuildpack
2015-11-17T13:04:51.55-0600 [App / 0] ERR LoadError:libdb2.so.1: 无法打开共享对象文件:没有这样的文件或目录 - / home / vcap / app / vendor / bundle / ru by / 2.2.0 / extensions / x86_64-linux / 2.2.0静态/ IBM_DB-2.6.1 / ibm_db.so
我的gemfile如下:
source 'http://rubygems.org'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.1.8'
gem 'backbone-on-rails'
gem 'whenever', :require => false
group :production do
gem 'ibm_db'
gem 'rails_12factor'
end
# Use SCSS for stylesheets
gem 'sass-rails', '~> 4.0.3'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# Use CoffeeScript for .js.coffee assets and views
gem 'coffee-script-source', '1.8.0'
gem 'coffee-rails', '~> 4.0.0'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', platforms: :ruby
# Use jquery as the JavaScript library
gem 'jquery-rails'
# Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
gem 'turbolinks'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.0'
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', '~> 0.4.0', group: :doc
# Use ActiveModel has_secure_password
gem 'bcrypt-ruby', '>= 3.1.2', :platform => :ruby
gem 'httparty'
gem 'figaro'
gem "cf-autoconfig", "~> 0.2.1"
# Use unicorn as the app server
# gem 'unicorn'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development do
gem 'byebug'
gem 'annotate'
gem 'better_errors'
gem 'binding_of_caller'
gem 'pry-rails'
# Use sqlite3 as the database for Active Record
gem 'sqlite3'
end
# Use debugger
# gem 'debugger', group: [:development, :test]
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin]
问题是什么?我尝试将ibm_db
版本设置为旧版本,但这也没有解决问题。
未设置环境变量IBM_DB_HOME。把它设置为你的 DB2 / IBM_Data_Server_驱动程序安装目录并重试gem 安装。
在不必在本地计算机上安装驱动程序的情况下,处理此问题的最佳方法是什么?我只是想将它部署到Bluemix。
答案 0 :(得分:0)
我不完全确定,但您似乎需要设置IBM_DB_HOME
环境变量。您可以configure environment variables either using the cf set-env
command, in your manifest.yml
file或在Bluemix仪表板中。我对ibm_db
gem或DB2不太熟悉,不知道该环境变量应该是什么值,但是this README in the gem可能会有所帮助(在页面中搜索“IBM_DB_HOME”)。
答案 1 :(得分:0)
您可以在ibm_db git issue repository here
中跟踪此问题答案 2 :(得分:0)
ibm_db gem会在安装gem时自动下载所需的文件。但是,在Bluemix中安装ibm_db gem之后,它无法链接下载的库。
要解决此问题,请按以下步骤操作。
<强>步骤1 即可。在使用迁移推送应用程序时,传递一个命令来设置LD_LIBRARY_PATH环境变量,如下所示。
cf推送BlogApp2 -c“导出 LD_LIBRARY_PATH = /家庭/ VCAP /应用/供应商/包/红宝石/ 2.2.0 /宝石/ IBM_DB-3.0.0 / lib目录/ clidriver中/ lib目录:$ LD_LIBRARY_PATH; bundle exec rake db:migrate“
注意:在commad上运行时,请指定您在gemfile中指定的Ruby版本和ibm_db版本。您还可以在LoadError中引用路径:libdb2.so在Bluemix上的服务器日志中看到的错误消息。 推送应用程序后,您将看到迁移已运行,您还将看到预期的数据库连接错误。
<强>步骤-2 即可。在应用程序中添加以下环境变量。登录bluemix - &gt;选择你的Ruby应用程序 - &gt;点击Environment Variables manu - &gt;选择用户定义。 - &GT;添加以下变量 - &gt;保存。
名称 - LD_LIBRARY_PATH
值 - /home/vcap/app/vendor/bundle/ruby/2.2.0/gems/ibm_db-3.0.0/lib/clidriver/lib:$LD_LIBRARY_PATH [Refer步骤1为值]
在Bluemix中将LD_LIBRARY_PATH添加到您的应用程序后,您可以从cf命令推送您的应用程序,如下所示。 cf push BlogApp2 -c“null”
现在您的应用程序将连接到SQLDB。
谢谢, Arvind的
答案 3 :(得分:0)
我在为使用ibm_db的node.js服务器设置Docker映像时遇到了这篇文章。我知道这是一个红宝石应用程序,但是此信息可能会帮助下一个人。这是使node_db可用并正常工作的Dockerfile。
FROM node:10
# Create app directory
WORKDIR .
# need to download the ibm drivers and set IBM_DB_HOME
ENV NODE_TLS_REJECT_UNAUTHORIZED=0
RUN mkdir /ibmdriver
RUN curl https://public.dhe.ibm.com/ibmdl/export/pub/software/data/db2/drivers/odbc_cli/linuxx64_odbc_cli.tar.gz \
| tar -xzf - -C /ibmdriver/
ENV IBM_DB_HOME /ibmdriver/clidriver
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:$IBM_DB_HOME/lib
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available ([email protected]+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm install --only=production
# Bundle app source
COPY . .
ENV BCCB_DECISIONTREE_SERVICE_PORT 3000
EXPOSE 3000
CMD [ "npm", "start" ]