使用Docker Compose启动的容器无法相互连接



我有一个关于Docker Compose的初学者问题。我正在尝试从Zipkin GitHub存储库扩展docker-compose-slim.yml示例文件。

我需要更改它,以便它可以包含我编写的一个简单的FastAPI应用程序。不幸的是,我无法让他们相互联系。当FastAPI试图向Zipkin容器发送POST请求时,它会被拒绝,即使它们都通过YAML文件中定义的显式链接和端口映射连接到同一网络。然而,我可以从主机连接到它们。

你能告诉我我做错了什么吗?

这是错误消息:

Error emitting zipkin trace. ConnectionError(MaxRetryError("HTTPConnectionPool(host='127.0.0.1', port=9411): Max retries exceeded with url: /api/v2/spans (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fce354711c0>: Failed to es
tablish a new connection: [Errno 111] **Connection refused**'))"))

这是Docker Compose YAML文件:

version: '2.4'
services:
zipkin:
image: openzipkin/zipkin-slim
container_name: zipkin
environment:
- STORAGE_TYPE=mem
ports:
# Port used for the Zipkin UI and HTTP Api
- 9411:9411
depends_on:
- storage
storage:
image: busybox:1.31.0
container_name: fake_storage
myfastapi:
build: .
ports:
- 8000:8000
links:
- zipkin
depends_on:
- zipkin
dependencies:
image: busybox:1.31.0
container_name: fake_dependencies
networks:
default:
name: foo_network

这是Dockerfile:

FROM python:3.8.5
ADD . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["uvicorn", "wsgi:app", "--host", "0.0.0.0", "--port", "8000"]

您必须告诉容器网络"foo_network";。外部标志表示无法从外部接近容器。当然,你不必打赌,但我认为作为一个例子,这可能很好。

并且由于";链接";功能查看此处链接

version: '2.4'
services:
zipkin:
image: openzipkin/zipkin-slim
container_name: zipkin
environment:
- STORAGE_TYPE=mem
ports:
# Port used for the Zipkin UI and HTTP Api
- 9411:9411
depends_on:
- storage
networks:
- foo_network
storage:
image: busybox:1.31.0
container_name: fake_storage
networks:
- foo_network
myfastapi:
build: .
ports:
- 8000:8000
links:
- zipkin
depends_on:
- zipkin
networks:
- foo_network
dependencies:
image: busybox:1.31.0
container_name: fake_dependencies
networks:
- foo_network
networks:
foo_network:
external: false

最新更新