【问题标题】:How to run Database services in Docker container?如何在 Docker 容器中运行数据库服务?
【发布时间】:2019-08-29 09:49:18
【问题描述】:

尝试构建 docker 镜像以在镜像中安装 Node 和数据库。 数据库已安装,但在尝试获取容器日志时服务未运行..

FROM ubuntu:lastest
RUN apt-get update && apt-get install -y curl wget gnupg && \
    apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv D68FA50FEA312927 && \
    echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.2.list && \
    curl -sL https://deb.nodesource.com/setup_8.x | bash - && \
    apt-get update && \
    apt-get install -y nodejs mongodb-org redis-server && \
    node -v && \
    npm -v

请帮忙解决这个问题,我是 Docker 新手。

【问题讨论】:

    标签: node.js mongodb docker redis


    【解决方案1】:

    您需要实际启动 mongod,例如喜欢

    apt-get install -y nodejs mongodb-org redis-server && \
    mongod --fork && \
    node -v && \
    npm -v
    

    但请记住,应该首先配置 mongo,它需要一些时间来启动。

    作为旁注,组合单独的单一用途 docker 映像而不是将数据库和应用程序打包在单个映像中被认为是一种更好的做法。 请阅读https://docs.docker.com/compose/overview/

    【讨论】:

      【解决方案2】:

      最好单独运行数据库容器,例如一个容器用于mongodb,一个容器用于redis。然后将您的应用程序容器连接到这些容器(通过links (deprecated) 或通过创建和共享网络as discussed in this question。您也不必从ubuntu:latest 开始,但可以从nodejs 之类的节点映像开始。一些“编排”,如docker-compose,可以使将这些服务插入在一起的任务变得更加容易,请参阅this tutorial(文章中的postgres数据库可以很容易地被mongodb和redis交换)。也可以考虑阅读best practices用于编写 Dockerfile。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-02
        • 1970-01-01
        • 2019-07-26
        • 1970-01-01
        • 2021-08-04
        相关资源
        最近更新 更多