gpt4 book ai didi

python-3.x - Docker-compose 在 python 文件中使用服务名称访问容器?

转载 作者:行者123 更新时间:2023-12-04 17:50:31 24 4
gpt4 key购买 nike

我有一个两个容器,以及如何使用 django Web 服务器访问 python 文件中的另一个容器

Docker-compose.yml 文件

version: '2'

services:

web:
build: ./web/
command: python3 manage.py runserver 0.0.0.0:8001
volumes:
- ./web:/code
ports:
- "8001:80"
networks:
- dock_net
container_name: con_web
depends_on:
- "api"
links:
- api
api:
build: ./api/
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- ./api:/code
ports:
- "8000:80"
networks:
- dock_net
container_name: con_api

networks:
dock_net:
driver: bridge

蟒文件:

我可以从表单中获取 mail_string
   mail = request.POST.get('mail_string', '') 
url = 'http://con_api:8000/api/'+mail+'/?format=json'
resp = requests.get(url=url)
return HttpResponse(resp.text)

我请求 api 容器并获得值(value),但我不知道 ip 地址

最佳答案

更新答案

在你的 python 文件中,你可以使用 url = 'http://api/'+mail+'/?format=json' .这将使您能够访问您试图从中获取请求的 url。

原答案

如果两个容器是独立的,那么可以创建一个network并且当您使两个容器成为同一网络的一部分时,您可以使用它们的主机名访问它们,您可以通过 --hostname=HOSTNAME 指定该主机名。 .

另一种简单的方法是使用 docker-compose 文件,它默认创建一个网络,文件中声明的所有服务都是该网络的一部分。通过这种方式,您可以通过服务名称访问其他服务。简直就像http://container1/当你的 docker-compose 文件是这样的:

version: '3'
services:

container1:
image: some_image

container2:
image: another_or_same_image

现在通过以下方式进入 container2:
docker exec -it container2 /bin/bash
并运行 ping http://contianer1
您将收到数据包,因此可以访问其他容器。

关于python-3.x - Docker-compose 在 python 文件中使用服务名称访问容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45423908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com