我创建了自己的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
是什么意思?
答案 0 :(得分:0)
首先,我猜应该是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
和超级用户或使用包装脚本。
Ref-https://docs.docker.com/config/containers/multi-service_container/