mongodb: неизвестный сервис в Docker - PullRequest
0 голосов
/ 29 мая 2019

Я создал свой собственный контейнер 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 -tmyContainer --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

?

1 Ответ

1 голос
/ 29 мая 2019

Во-первых, это должно быть 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...