看看支持這些源碼的Dockerfiles!
如果它們都來自可比較的來源(即。ubuntu),那麼你應該能夠將mongo dockerfile修改爲從節點圖像去,從而生成一個包含兩種可用服務的圖像。
因此,修改the mongo:2.6.11 dockerfile:
FROM node:0.10.40
RUN groupadd -r mongodb && useradd -r -g mongodb mongodb
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
ca-certificates curl \
numactl \
&& rm -rf /var/lib/apt/lists/*
# grab gosu for easy step-down from root
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4
RUN curl -o /usr/local/bin/gosu -SL "https://github.com/tianon/gosu/releases/download/1.6/gosu-$(dpkg --print-architecture)" \
&& curl -o /usr/local/bin/gosu.asc -SL "https://github.com/tianon/gosu/releases/download/1.6/gosu-$(dpkg --print-architecture).asc" \
&& gpg --verify /usr/local/bin/gosu.asc \
&& rm /usr/local/bin/gosu.asc \
&& chmod +x /usr/local/bin/gosu
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys DFFA3DCF326E302C4787673A01C4E7FAAAB2461C
ENV MONGO_VERSION 2.6.11
RUN curl -SL "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGO_VERSION.tgz" -o mongo.tgz \
&& curl -SL "https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-$MONGO_VERSION.tgz.sig" -o mongo.tgz.sig \
&& gpg --verify mongo.tgz.sig \
&& tar -xvf mongo.tgz -C /usr/local --strip-components=1 \
&& rm mongo.tgz*
VOLUME /data/db
COPY docker-entrypoint.sh /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]
EXPOSE 27017
...當然,你需要修改切入點,同時運行的服務,如果你做到這一點。
但是:不要這樣做!最佳實踐方法是擁有多個容器,每個服務一個容器,而不是僅構建一個運行堆棧中涉及的所有服務的容器。通過這種方式將組件保存在自己的沙盒名稱空間中可以降低以下幾個方面的複雜性:安全漏洞跨越容器的空間較少;容器之間的相互依賴性較小(新版節點所需的軟件更新不會破壞MongoDB或相反);您的容器不需要初始系統或與監督多個服務相關的其他組件;等等。
請參閱Docker網站上的Container Linking documentation瞭解如何配置您的容器以便能夠進行通信。
我認爲Docker方法是在每個容器中運行單獨的服務,您需要運行應用程序的節點容器和mongo的一個容器。 – Carlangueitor