2017-01-15 6 views
0

У меня есть Docker файл вроде этого:Как добавить сервер CouchDB в Docker файл создания

FROM ubuntu:12.04 
MAINTAINER me <[email protected]> 

RUN apt-get -y update 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install supervisor \ 
apache2 \ 
mysql-server \ 
php5 \ 
libapache2-mod-php5 \ 
php5-mysql \ 
php5-mcrypt 

#ssh 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install openssh-server 
RUN mkdir /var/run/sshd 
RUN echo 'root:root' | chpasswd 
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config 
RUN sed '[email protected]\s*required\s*[email protected] optional [email protected]' -i /etc/pam.d/sshd 
ENV NOTVISIBLE "in users profile" 
RUN echo "export VISIBLE=now" >> /etc/profile 

EXPOSE 22 80 
ADD ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf 
CMD ["/usr/bin/supervisord"] 

Мой вопрос, как я могу добавить сервер CouchDB в этот Docker файл?

Я могу получить встроенное изображение докеры couchdb отсюда: https://hub.docker.com/r/klaemo/couchdb/, но как мне создать изображение, подобное этому? Я не могу найти документацию относительно процесса!

Я потратил 3 часа, чтобы попытаться зайти в Google, но мне не повезло, поэтому я рискну спросить, даже если это вопрос свалить!

ответ

0

Есть ли определенная версия couchdb, которую вы хотите в контейнере для докеров? Если нет, так как вы используете Ubuntu 12.04 в качестве базового изображения, вы можете получить CouchDB 1.0.1 двоичные файлы из Ubuntu 12.04/precise [universe] repository легко, добавив couchdb в свой apt-get список, как это:

FROM ubuntu:12.04 
MAINTAINER me <[email protected]> 

RUN apt-get -y update 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install supervisor \ 
apache2 \ 
mysql-server \ 
php5 \ 
libapache2-mod-php5 \ 
php5-mysql \ 
php5-mcrypt \ 
couchdb 
#[--Rest of your dockerfile goes here unchanged--] 

Вы можете альтернативно использовать PPA, поддерживаемый командой Apache CouchDB, чтобы получить последние стабильные версии для вашего базового изображения на основе официально выпущенных шаров. Для этой опции вы можете использовать следующую dockerfile:

# To install the ppa finder tool in your docker container 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install python-software-properties 
RUN add-apt-repository ppa:couchdb/stable -y 
RUN apt-get -y update 
RUN DEBIAN_FRONTEND=noninteractive apt-get -y install supervisor \ 
apache2 \ 
mysql-server \ 
php5 \ 
libapache2-mod-php5 \ 
php5-mysql \ 
php5-mcrypt \ 
couchdb 
#[--Rest of your dockerfile goes here unchanged--] 

Если вы хотите, последний или конкретную версию CouchDB в вашем Docker контейнере, то вы, возможно, придется строить CouchDB из исходного кода. Обратите внимание, что для этого подхода вам потребуется установить еще много пакетов (g++ erlang-dev erlang-manpages erlang-base-hipe erlang-eunit, libmozjs185-dev libicu-dev libcurl4-gnutls-dev libtool) на ваш контейнер, чтобы иметь возможность создавать couchdb из исходного кода. Однако вы можете очистить/удалить пакеты, которые необходимы только для сборки couchdb. Полный список зависимостей можно найти на official couchdb build wiki on apache. Если вам действительно нужна последняя версия, вы можете обратиться к этому dockerfile и соответственно добавить обновленный файл докеров. Ниже приведен полный файл докеров [UNTESTED] для вашего удобства:

FROM ubuntu:12.04 
MAINTAINER me <[email protected]> 
ENV COUCHDB_VERSION master 
RUN groupadd -r couchdb && useradd -d /usr/src/couchdb -g couchdb couchdb 
# download dependencies 
RUN apt-get update -y -qq && apt-get install -y --no-install-recommends \ 
build-essential \ 
erlang-dev \ 
erlang-manpages \ 
erlang-base-hipe \ 
erlang-eunit \ 
erlang-nox \ 
erlang-xmerl \ 
erlang-inets \ 
libmozjs185-dev \ 
libicu-dev \ 
libcurl4-gnutls-dev \ 
libtool 
RUN cd /usr/src && git clone https://git-wip-us.apache.org/repos/asf/couchdb.git \ 
&& cd couchdb && git checkout $COUCHDB_VERSION \ 
&& cd /usr/src/couchdb && ./configure && make 
# You can optionally purge/remove the packages you installed to build the couchdb from source. 
# permissions 
RUN chmod +x /usr/src/couchdb/dev/run && chown -R couchdb:couchdb /usr/src/couchdb 
USER couchdb 
EXPOSE 5984 15984 25984 35984 15986 25986 35986 
#[--Rest of your dockerfile can go here as required--]