Как добавить сервер couchdb в файл создания docker

У меня есть такой файл docker :

FROM ubuntu:12.04
MAINTAINER me <me@c.com>

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 's@sessions*requireds*pam_loginuid.so@session optional pam_loginuid.so@g' -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 docker отсюда : https://hub.docker.com/r/klaemo/couchdb/, но как я могу создать такой образ? Я не могу найти никакой документации о процессе!

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

1 ответ

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

    FROM ubuntu:12.04
    MAINTAINER me <me@c.com>
    
    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, чтобы получить последние стабильные релизы для вашего базового образа на основе официально выпущенных tar balls. Для этого параметра можно использовать следующий 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. Полный список зависимостей можно найти на официальном сайте couchdb build wiki на apache . Если вы действительно хотите последнюю версию, то вы можете обратиться к этому dockerfile и добавьте обновление dockerfile соответственно. Вот полный dockerfile [непроверенный] для удобства использования:

    FROM ubuntu:12.04
    MAINTAINER me <me@c.com>
    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--]