【发布时间】:2020-10-29 12:33:39
【问题描述】:
我的目标是使用 docker-compose 从另一个容器通过 URL 访问容器。
所以,假设我有以下docker-compose.yml 文件
version: "3.8"
services:
web:
build: web
ports:
- "8000:8000"
depends_on:
- db
db:
image: postgres
ports:
- "8001:5432"
和文件夹web中的Dockerfile Dockerfile
FROM alpine:3.7
RUN ping postgres://db:5432
运行docker-compose build 返回
db uses an image, skipping
Building web
Step 1/2 : FROM alpine:3.7
---> 6d1ef012b567
Step 2/2 : RUN ping postgres://db:5432
---> Running in afbfcd27b340
ping: bad address 'postgres://db:5432'
Service 'web' failed to build : The command '/bin/sh -c ping postgres://db:5432' returned a non-zero code: 1
docker compose 中的网络文档( https://docs.docker.com/compose/networking/#links) 声明:
现在每个容器都可以查找主机名 web 或 db 并取回相应容器的 IP 地址。例如,web 的应用程序代码可以连接到 URL postgres://db:5432 并开始使用 Postgres 数据库。
从服务数据库获取的连接到容器的正确 URL 是什么?
【问题讨论】:
-
您无法从 Dockerfile 中连接到其他容器。 (另外
ping使用非常低级的协议 ICMP 发送数据包,并且根本不理解 URL。)
标签: docker url networking docker-compose