Docker的意思是使用哪个堆栈?

Docker的意思是使用哪个堆栈?,docker,Docker,我想创建一个docker容器来加载平均堆栈(特别是Mongo-Node)。据我所知,我不能在docker文件中使用多个From语句,在docker映像上设置Node和Mongo最简单的方法是什么 我要这样做吗 FROM node:0.10.40 RUN <whatever the mongo install command is> 来自节点:0.10.40 跑 或者这个, FROM mongo:2.6.11 RUN <whatever the npm install c

我想创建一个docker容器来加载平均堆栈(特别是Mongo-Node)。据我所知,我不能在docker文件中使用多个
From
语句,在docker映像上设置Node和Mongo最简单的方法是什么

我要这样做吗

FROM node:0.10.40

RUN <whatever the mongo install command is>
来自节点:0.10.40
跑
或者这个,

FROM mongo:2.6.11

RUN <whatever the npm install command is>
来自mongo的
:2.6.11
跑

还是别的什么?

看看支持这些源代码的DockerFile

如果它们都来自类似的来源(例如ubuntu),那么您应该能够获取mongo dockerfile并将其修改为从节点映像开始,从而生成一个具有两种可用服务的映像

因此,修订:

…当然,如果要这样做,您需要修改入口点以运行这两个服务


但是:根本不要这样做最佳实践方法是拥有多个容器,每个服务一个容器,而不是只构建一个容器来运行堆栈中涉及的所有服务。以这种方式将您的组件保持在各自的沙盒名称空间中,可以在几个方面降低复杂性:跨容器的安全漏洞空间更小;容器之间的相互依赖性较低(新版本的node所需的软件更新不会破坏mongodb或相反);您的容器不需要init系统或其他与监视多个服务相关的组件;等等


请参阅Docker网站上的,以了解如何配置您的容器以便能够通信。

我认为Docker的方法是在每个容器中运行单独的服务,您需要为应用程序运行一个节点容器,为mongo运行一个容器。这样我就可以运行多个容器并让它们相互通信?aka my node container可以与我的mongo container对话?是的,您可以将容器配置为能够相互通信。我是否可以制作一个脚本或其他dockerfile,以便某人可以用一个命令启动这两个服务?所以,如果我想将这堆docker容器部署到一个新服务器上,我能用一个命令完成吗?如果你能为一个容器的部署编写脚本,当然你也能为两个容器的部署编写脚本——但具体操作细节将是另一个问题。@Catfish我想你想要的是。它的设计正是为了处理这种情况。
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