如何仅使用一个dockerfile将Flask API与mongo结合?

路易斯·贝加

我正在尝试将Flask制造的API的图像与mongo的图像合并到单个最终图像中,例如以下dockerfile:

FROM  mongo:latest

EXPOSE 27017

FROM python:3.8-alpine

ADD requirements.txt .

ENV VIRTUAL_ENV=/opt/venv
RUN pip install --upgrade pip
RUN pip install -r requirements.txt

EXPOSE 5000

ADD api /api
ADD scripts /api/scripts
WORKDIR /api
CMD python api.py &> api.log

但这不起作用...如果我首先将API命令放入dockerfile中,则仅创建API映像。如果我先将mongo的命令放在首位,则仅创建mongo的映像。我正在使用以下命令在docker中创建映像:

docker build --tag api .

我正在使用以下命令创建容器:

docker run -p 5000:5000 -p 27017:27017 --name api -d api

我究竟做错了什么?

谢谢,

罗伯特·希曼

我不会推荐这个

我个人从未见过将应用程序和数据库包含在单个Dockerfile中。这还需要您在一个容器中启动2个进程。如果您确实想走这条路,那么这里的问题是您有一个多阶段的Dockerfile,但是从第一阶段起就没有包含任何内容,因此,实际上您只有python代码。

同样,如果您确实想走这条路(我强烈建议您不要这样做),则可以这样调用您的第一阶段:

FROM mongo:latest AS mongo_builder

然后从该阶段开始复制

FROM mongo:latest AS mongo_builder

FROM python:3.8-alpine

COPY --from mongo_builder /usr/bin/mongo* /usr/bin/

...

然后,您可以算出如何在容器中运行2个进程(这是不平凡的)。

但是,我不建议您这样做。


我会怎么做

我要做的是完全废弃多阶段构建并运行2个单独的容器。

一旦确定了如何在容器中运行python应用程序(myapp现在将其称为),即可运行2个容器。

docker run -d --name mongo mongo:latest  # (You'll want to figure out how to persist data)
docker run -d --name myapp --link mongo -p 50000:50000 myapp:latest --mongo-host mongo:27017

^这是假设您有一种方法可以指定要连接的mongo主机--mongo-host

这将使用--link允许您访问mongo容器网络选项,该网络将以其名称(mongo进行引用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

c # 将 NLog 与 Mongo 结合使用

来自分类Dev

如何将Django REST API限制为仅一个用户?

来自分类Dev

仅使用 API 将灰度图像绘制到另一个 BufferedImage 的 alpha 波段

来自分类Dev

使用FLASK将REST API与Web界面结合的最佳实践

来自分类Dev

如何将Python方法链与另一个方法结合使用

来自分类Dev

如何将Android KeyStore API与API 18结合使用?

来自分类Dev

如何使用JavaScript在Google Maps API中仅获取一个标记

来自分类Dev

结合使用2个YouTube API?

来自分类Dev

将API Guard与Laravel结合使用

来自分类Dev

将解析API与Codeigniter结合使用

来自分类Dev

将Google Drive API与Laravel结合使用

来自分类Dev

将libfmt与旧版API结合使用

来自分类Dev

将Google Drive API与Laravel结合使用

来自分类Dev

将Cloudant API与IBMCloudCode结合使用

来自分类Dev

将 JSON 查询与 Nagios API 结合使用

来自分类Dev

如何使用`update`将一个新元素推入mongo文档内的数组中?

来自分类Dev

与CMS结合使用的API:如何存储HTML?

来自分类Dev

使用PHP从API中仅获取一个值

来自分类Dev

如何在Dart的一个接口中结合传统和基于Future的API?

来自分类Dev

在wso2 API管理中,如何仅将网关分离到另一个VM?

来自分类Dev

将API数据与MongoDB数据结合

来自分类Dev

将actor模型与RESTful API结合

来自分类Dev

将 api 响应结合到谷歌图表

来自分类Dev

如何使用MomentJS将一个变量的日期与另一个变量的时间结合起来?

来自分类Dev

如何结合 SimpleInjector for WCF 和 Web API

来自分类Dev

结合使用Backendless API和Qt for Android

来自分类Dev

结合使用.NET Core Identity和API

来自分类Dev

如何将Flutters ListView.builder与DataTable结合使用,还是有另一个小部件?

来自分类Dev

如何使用Rg.Plugins.Popup将XAML和模板结合到一个C#模板中?

Related 相关文章

  1. 1

    c # 将 NLog 与 Mongo 结合使用

  2. 2

    如何将Django REST API限制为仅一个用户?

  3. 3

    仅使用 API 将灰度图像绘制到另一个 BufferedImage 的 alpha 波段

  4. 4

    使用FLASK将REST API与Web界面结合的最佳实践

  5. 5

    如何将Python方法链与另一个方法结合使用

  6. 6

    如何将Android KeyStore API与API 18结合使用?

  7. 7

    如何使用JavaScript在Google Maps API中仅获取一个标记

  8. 8

    结合使用2个YouTube API?

  9. 9

    将API Guard与Laravel结合使用

  10. 10

    将解析API与Codeigniter结合使用

  11. 11

    将Google Drive API与Laravel结合使用

  12. 12

    将libfmt与旧版API结合使用

  13. 13

    将Google Drive API与Laravel结合使用

  14. 14

    将Cloudant API与IBMCloudCode结合使用

  15. 15

    将 JSON 查询与 Nagios API 结合使用

  16. 16

    如何使用`update`将一个新元素推入mongo文档内的数组中?

  17. 17

    与CMS结合使用的API:如何存储HTML?

  18. 18

    使用PHP从API中仅获取一个值

  19. 19

    如何在Dart的一个接口中结合传统和基于Future的API?

  20. 20

    在wso2 API管理中,如何仅将网关分离到另一个VM?

  21. 21

    将API数据与MongoDB数据结合

  22. 22

    将actor模型与RESTful API结合

  23. 23

    将 api 响应结合到谷歌图表

  24. 24

    如何使用MomentJS将一个变量的日期与另一个变量的时间结合起来?

  25. 25

    如何结合 SimpleInjector for WCF 和 Web API

  26. 26

    结合使用Backendless API和Qt for Android

  27. 27

    结合使用.NET Core Identity和API

  28. 28

    如何将Flutters ListView.builder与DataTable结合使用,还是有另一个小部件?

  29. 29

    如何使用Rg.Plugins.Popup将XAML和模板结合到一个C#模板中?

热门标签

归档