首页 > 解决方案 > 在 docker 容器中运行和暴露 mosquitto 和 mongodb

问题描述

我需要在 docker 容器中同时运行 mosquitto 和 mongodb,所以我编写了这个 docker 文件

# Set the base image to Ubuntu
FROM ubuntu

RUN apt update -y && apt upgrade -y

# Install MongoDB package (.deb)
RUN apt install -y mongodb mosquitto

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

# Expose the default port
EXPOSE 27017 1883

ENTRYPOINT mosquitto -v && mongod --bind_ip 0.0.0.0

但是这样做只有蚊子会跑。如果我只将 mosquitto 或 mongodb 设置为入口点,它可以工作,我什至可以从外部访问,但我不能让两者都在同一个容器中运行。有没有办法做到这一点?

标签: linuxmongodbdockercontainersmosquitto

解决方案


Docker 容器被设计为一次只运行一个进程。可以做到,但通常会有更难调试的问题。这是另一个讨论这个想法的线程。

此外,您通常会希望使用为某些软件提供的图像,例如官方 mongo 图像官方蚊子图像。这是因为它们通常针对他们需要做的事情进行了更好的优化。

所以我的建议是分成两个相互通信的独立容器。


推荐阅读