【问题标题】:mongodb: unrecognized service in Dockermongodb:Docker中无法识别的服务
【发布时间】:2019-10-14 19:34:36
【问题描述】:

我创建了自己的 Docker 容器,其中包含最新版本的 ubuntu、python3.7 和 mongodb。

Dockerfile

FROM       ubuntu:latest
MAINTAINER Docker

# Update apt-get sources AND install MongoDB
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y software-properties-common
RUN apt install -y gnupg2
RUN gpg2 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F3B1AA8B

# Installation:
RUN add-apt-repository ppa:deadsnakes/ppa

RUN apt-get install -y python3.7

#Mongodb
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
RUN apt-add-repository 'deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse'

RUN apt-get update

RUN apt-get install -y mongodb-org

# Create the MongoDB data directory
RUN mkdir -p /data/db

# Create the MongoDB data directory
RUN mkdir -p /data/code
RUN mongod --version

RUN mongod --dbpath /data/db --fork --logpath /data/db/log

# COPY some Code to Container
COPY dev /data/code

# Installing pip for python modules
RUN apt-get install -y python3-pip

# Install modules
WORKDIR /data/code/
RUN pip3 install -r requirements.txt

RUN service mongodb start

RUN python3 main.py
RUN python3 server.py

EXPOSE 80

# Set /bin/bash as the dockerized entry-point application
ENTRYPOINT ["/bin/bash"]

当我运行构建命令时: docker build -t myContainer --no-cache .

它成功运行,直到 mongodb 应该作为服务启动

.
.
.
Removing intermediate container 3d43e1d1cd96
 ---> 62f10ce67e07
Step 21/25 : RUN service mongodb start
 ---> Running in 42e08e7d7638
mongodb: unrecognized service

如何启动服务?我正在尝试使用以下命令启动服务:service mongodb start。这不正确吗?那行是什么:

Removing intermediate container 3d43e1d1cd96

是什么意思?

【问题讨论】:

    标签: mongodb docker ubuntu


    【解决方案1】:

    首先,我猜应该是service mongod start。但这并不能解决您的问题。

    使用 Docker 时,您的进程必须是前台进程,service mongod start 将进入后台并且您的容器将立即退出。

    你应该使用mongod前台进程如下-

    CMD ["mongod"]
    

    将上面的 CMD 放在 Dockerfile 的末尾,以确保你的容器运行 mongod。

    官方 Dockerfile -
    https://github.com/docker-library/mongo/blob/40056ae591c1caca88ffbec2a426e4da07e02d57/3.4/Dockerfile

    如果要运行多个进程,请将 docker ENTRYPOINT 与 supervisord 结合使用或使用包装脚本。

    参考 - https://docs.docker.com/config/containers/multi-service_container/

    【讨论】:

      猜你喜欢
      • 2023-03-24
      • 2017-06-21
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2015-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多