我想把我的申请装起来。我使用mongodb和另外两个微服务。正如您在下面的docker撰写文件中看到的,我有一些问题。
我的要求:
以下是我的问题:
1-公开码头文件中的端口和码头-组成相同的东西吗?
2-如何将卷装入mongodb作为最佳实践?
3-如何完成上述要求与下图在码头组成?
这是我的docker-compose文件:
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
下面是我的dockerfile在my_gui目录下的内容:
FROM continuumio/miniconda3
WORKDIR /app
COPY . .
RUN pip install dash
EXPOSE 8080
EXPOSE 27017
ENTRYPOINT [ "python","gui_script.py"]
最后,下面是我的dockerfile,位于my_project目录下:
FROM continuumio/miniconda3
WORKDIR /app
COPY . .
EXPOSE 27017
ENTRYPOINT [ "python","main_script.py"]
发布于 2021-09-22 11:08:51
1. EXPOSE
指令在Dockerfile
中通知Docker容器在运行时侦听指定的网络端口(如使用docker run -p
命令时)。
然而,在组合中使用ports
是一种指定这些端口的动态方法。因此,像nginx
或apache
这样的图像通常在容器内的端口80上运行,它们将在Dockerfile本身中使用EXPOSE
。
而具有动态端口的映像(可以使用环境变量来控制)则会在停靠器中使用公开,运行或编写文件。
some_webapi:
environment:
- ASPNETCORE_URLS=http://*:80
build:
context: .
dockerfile: ./Dockerfile
2.如mongo图像(/蒙戈/)的码头枢纽页面中所记录的,您可以使用
volumes:
- '/path/to/your/pc/folder:/path/inside/docker'
3.关于最后一个问题,你可能需要在写作中使用网络。
默认情况下,Compose为您的应用程序设置一个网络。服务的每个容器都加入了默认网络,并且可以被网络上的其他容器访问,并且可以在主机名与容器名称相同的主机名上被发现。
服务可以加入这样的网络。
gui_image:
build:
context: .
dockerfile: .\my_gui\dockerfile
ports:
- 8080:8080
- 27017:27017
depends_on:
- mongo
networks:
- gui
此外,您还必须在撰写文件的全局范围内定义服务使用的所有网络。
version: '3'
services:
networks:
gui:
在此之后,容器甚至可以通过它们的container_name
(您可以在服务中定义)看到对方。
mongo:
image: mongo:latest
ports:
- 27017:27017
container_name: gui_mogno
然后,您将能够使用类似于以下mongodb://gui_mogno:27017/
的连接字符串连接到mongo。
您可以获得更多关于联网这里的信息。
https://stackoverflow.com/questions/69289483
复制