我正在使用Docker Compose来制作一个运行带有Oracle后端的Rails应用程序的容器。
Dockerfile and docker-compose.yml
这很有效,直到我的Docker容器尝试安装ruby-oci8 gem,它会查找一些特定于oracle的环境变量。
These variables are exposed in the oracle container's Dockerfile:
RUN 'export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe'
问题是,如何将oracle容器上的此环境变量公开给Web容器?
答案 0 :(得分:1)
这里的问题是Web容器需要oracle客户端与db容器中的oracle数据库进行通信。这需要做一些事情,因为oracle没有在apt-get上提供客户端,所以我从Oracle的站点下载了RPM,将它们放在vendor /中并在dockerfile中执行了以下操作:
FROM ruby:2.2.2
RUN apt-get update && apt-get install -y build-essential
RUN apt-get install -y libxml2-dev libxslt1-dev
RUN apt-get install -y libqt4-webkit libqt4-dev xvfb
RUN apt-get install -y nodejs
# Needed for Oracle Client
RUN apt-get install -y libaio1 libaio-dev
# Required for Oracle RPMs
RUN apt-get install -y alien
# Set up app at /code
ENV APP_HOME /code
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
ADD vendor/*.rpm $APP_HOME/vendor/
# Oracle Client Environment Variables
ENV ORACLE_HOME /usr/lib/oracle/12.1/client64
ENV LD_LIBRARY_PATH $ORACLE_HOME/lib/:$LD_LIBRARY_PATH
ENV NLS_LANG American_America.UTF8
ENV PATH $ORACLE_HOME/bin:$PATH
# Set this so you don't have to type it in with rake db:create
ENV ORACLE_SYSTEM_PASSWORD myoraclecontainerspassword
# Install Oracle Client
RUN alien -i vendor/oracle-instantclient.rpm && alien -i vendor/oracle-sdk.rpm && alien -i vendor/oracle-sqlplus.rpm
ADD Gemfile* $APP_HOME/
RUN bundle install
ADD . $APP_HOME/
答案 1 :(得分:0)
可以添加一行
ENV ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe
到你的网站Dockerfile?
在docker-compose中有一些支持环境变量的讨论,但它在docker-compose.yml中支持来自主机系统的变量。
目前尚未讨论任何有助于您提问的内容。