Docker撰写:暴露环境variables到链接的服务

我正在玩Docker Compose,使一个容器运行一个带有Oracle后端的Rails应用程序。

Dockerfile和docker-compose.yml

这很好,直到我的Docker容器试图安装ruby-oci8 gem,它寻找一些or​​acle特定的环境variables。

这些variables在Oracle容器的Dockerfile中公开 :

RUN 'export ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe' 

问题是,如何将oracle容器上的这个环境variables暴露给Web容器?

这里的问题是Web容器需要一个Oracle客户端来与db容器中的oracle数据库进行通信。 这需要做一些工作,因为oracle并没有在apt-get上提供一个客户端,所以我从Oracle的站点下载了RPMs,把它们放在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/ 

你可以添加一条线吗?

 ENV ORACLE_HOME=/u01/app/oracle/product/11.2.0/xe 

到您的网站Dockerfile?

有一些讨论支持docker-compose中的环境variables,但是它支持docker-compose.yml中主机系统的variables。

目前没有什么能够帮助你解决问题的。

https://github.com/docker/compose/issues/495