linux - 在 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 设置为入口点,它可以工作,我什至可以从外部访问,但我不能让两者都在同一个容器中运行。有没有办法做到这一点?
解决方案
Docker 容器被设计为一次只运行一个进程。可以做到,但通常会有更难调试的问题。这是另一个讨论这个想法的线程。
此外,您通常会希望使用为某些软件提供的图像,例如官方 mongo 图像和官方蚊子图像。这是因为它们通常针对他们需要做的事情进行了更好的优化。
所以我的建议是分成两个相互通信的独立容器。
推荐阅读
- design-patterns - 避免循环引用的设计模式
- postgresql - 如何将“created_timestamp”:1553678246 转换为日期 dd:mm:yyyy 格式
- javascript - 一些书签不在 iOS 上执行:如何调试?
- arrays - 在 Angular 中将数组转换为对象
- c# - 无法使用 C# 和 ADO.NET 添加到数据库
- c++11 - 从 decltype 中删除类成员类型部分
- angular - 在 Angular 中注入参数化依赖和手动引导
- phpstorm - 如何在提交窗口中显示未版本控制的文件
- java - 当我在 Eclipse 中构建我的 Spring Boot 应用程序时得到一个期望
- kubernetes - Kubernetes 节点不启动