首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在码头上相互沟通多个集装箱?

如何在码头上相互沟通多个集装箱?
EN

Stack Overflow用户
提问于 2021-09-22 18:24:20
回答 1查看 421关注 0票数 1

我想把我的申请装起来。我使用mongodb和另外两个微服务。正如您在下面的docker撰写文件中看到的,我有一些问题。

我的要求:

  • main_image需要连接到MongoDB。
  • gui_image需要连接到MongoDB。
  • gui_image需要在端口8080上显示其图形用户界面(也可以使用另一个端口)
  • gui_image必须读写我电脑中的一个文件。
  • MongoDB必须访问我计算机中的一个卷。
  • main_image需要访问互联网。

以下是我的问题:

1-公开码头文件中的端口和码头-组成相同的东西吗?

2-如何将卷装入mongodb作为最佳实践?

3-如何完成上述要求与下图在码头组成?

这是我的docker-compose文件:

代码语言:javascript
运行
复制
version: "3"
services:
  mongo:
    image: mongo:latest
    ports:
      - 27017:27017
    
  main_image:
    build: 
      context: .
      dockerfile: .\my_project\dockerfile
    depends_on:
      - mongo
  gui_image:
    build: 
      context: .
      dockerfile: .\my_gui\dockerfile
    ports:
      - 8080:8080
      - 27017:27017
    depends_on:
      - mongo

下面是我的dockerfilemy_gui目录下的内容:

代码语言:javascript
运行
复制
FROM continuumio/miniconda3
WORKDIR /app
COPY . .
RUN pip install dash
EXPOSE 8080
EXPOSE 27017

ENTRYPOINT [ "python","gui_script.py"]

最后,下面是我的dockerfile,位于my_project目录下:

代码语言:javascript
运行
复制
FROM continuumio/miniconda3
WORKDIR /app
COPY . .
EXPOSE 27017
ENTRYPOINT [ "python","main_script.py"]
EN

回答 1

Stack Overflow用户

发布于 2021-09-22 19:08:51

1. EXPOSE指令在Dockerfile中通知Docker容器在运行时侦听指定的网络端口(如使用docker run -p命令时)。

然而,在组合中使用ports是一种指定这些端口的动态方法。因此,像nginxapache这样的图像通常在容器内的端口80上运行,它们将在Dockerfile本身中使用EXPOSE

而具有动态端口的映像(可以使用环境变量来控制)则会在停靠器中使用公开,运行或编写文件。

代码语言:javascript
运行
复制
some_webapi:

environment:
  - ASPNETCORE_URLS=http://*:80
build:
    context: .
    dockerfile: ./Dockerfile

2.如mongo图像(/蒙戈/)的码头枢纽页面中所记录的,您可以使用

代码语言:javascript
运行
复制
volumes:
  - '/path/to/your/pc/folder:/path/inside/docker'

3.关于最后一个问题,你可能需要在写作中使用网络。

默认情况下,Compose为您的应用程序设置一个网络。服务的每个容器都加入了默认网络,并且可以被网络上的其他容器访问,并且可以在主机名与容器名称相同的主机名上被发现。

服务可以加入这样的网络。

代码语言:javascript
运行
复制
gui_image:
    build: 
      context: .
      dockerfile: .\my_gui\dockerfile
    ports:
      - 8080:8080
      - 27017:27017
    depends_on:
      - mongo
    networks:
      - gui

此外,您还必须在撰写文件的全局范围内定义服务使用的所有网络。

代码语言:javascript
运行
复制
version: '3'

services:

networks:
   gui:

在此之后,容器甚至可以通过它们的container_name (您可以在服务中定义)看到对方。

代码语言:javascript
运行
复制
   mongo:
     image: mongo:latest
     ports:
       - 27017:27017
     container_name: gui_mogno

然后,您将能够使用类似于以下mongodb://gui_mogno:27017/的连接字符串连接到mongo。

您可以获得更多关于联网这里的信息。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69289483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档