2015-04-11 2 views
1

Я играю с Docker Compose, чтобы создать контейнер с Rails-приложением с бэкэнд Oracle.Docker Compose: Отображение переменных среды для связанной службы

Dockerfile and docker-compose.yml

Это прекрасно работает, пока мой Docker контейнер не пытается установить рубиново-oci8 камень, который выглядит для некоторых гадательных конкретных переменных окружения.

These variables are exposed in the oracle container's Dockerfile:

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

Вопрос в том, как я могу выставить эти переменные окружения на оракул контейнера в вебе-контейнер?

ответ

1

Проблема здесь состоит в том, что веб-контейнер должен клиент оракула поговорить с базой данных оракула в контейнере дб. Это заняло немного делать, так как оракул не обеспечивает клиента на APT-получить, так что я скачал RPMs с сайта Oracle, поместите их в поставщика/и сделал следующее в 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/ 
0

Не могли бы вы добавить строку

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

на свой веб Dockerfile?

Существует некоторая дискуссия для поддержки переменных среды в docker-compose, но вокруг переменных, поддерживающих вашу хост-систему, в файле docker-compose.yml.

Ничего, что помогло бы вам в этом вопросе.

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

+0

Это затрагивает то, что на самом деле было проблемой, которая является камнем ruby-oci8, требует доступа к клиенту oracle *, который не предоставляется контейнером oracle xe. Мне пришлось добавить некоторые строки в файл докеров, чтобы установить клиент из RPM, а затем добавить необходимые переменные среды для этой установки. – DVG

Смежные вопросы