Docker-Compose API 调用和端点容器化

亨利胡迪尼

使用 docker-compose 我有多个容器在运行 - 其中一个是调用 API 的分析器容器,另一个容器 apiconnection 应该接收调用并将信息发回。但是,当我运行撰写文件时,它总是在行Get http://apiconnection:8080/maccaption: dial tcp: lookup apiconnection on 127.0.0.11:53: no such host的 Profiler 容器上返回http.DefaultClient.Do

这是我的撰写文件的示例:

apiConnection:
 image: apiconnection:1.0
 ports:
  - "8080:8080"
 networks: 
  - maccaptionNet
profiler:
  image: profiler:1.0
  networks: 
   - maccaptionNet
  depends_on:
   - "apiConnection"

我正在像这样在我的分析器图像中调用 api - 它出错了DefaultClient

url := "http://apiconnection:8080/maccaption"

req, err := http.NewRequest("GET", url, nil)
if err != nil {
    log.Fatal(err)
}

res, err := http.DefaultClient.Do(req)
if err != nil {
    fmt.Println("Line 27")
    log.Fatal(err)
}

body, err := ioutil.ReadAll(res.Body)
if err != nil {
    fmt.Println("Line 33")
    log.Fatal(err)
}

如果我修改url := "http://apiconnection:8080/maccaption"localhost 像这样查看url := "http://localhost:8080/maccaption"它会更改为connect refused,但我认为我不应该查看 localhost,我需要查看 Docker 容器,不是吗?

我将 url 设置为与 docker 容器的连接,并使用我在 docker-compose 文件中分配的端口。并在我的 apiconnection 图像中接收请求,如下所示:

    r := mux.NewRouter()

r.HandleFunc("/maccaption", handleMaccaption).Methods("GET")

http.ListenAndServe(":8080", r)

它现在应该做的就是启动并发出单个请求以证明它正在工作并返回一些 json 信息。此代码在 docker 之外工作,将 url 变量中的容器名称替换为 localhost。但是我无法在 docker 中运行它。

我已经查看了这些其他来源的帮助,但无济于事:如何在 docker 容器内调用 api 端点? Docker 中对端点进行 REST 调用Docker-compose 使用端点进行内部通信

任何指针将不胜感激 - 谢谢!

**编辑 - 修复我不稳定的代码格式

亨利胡迪尼

对于将来尝试做这样的事情的任何人:上面的代码确实有效。但是我出错的地方是,在我的文件中,url := "http://apiconnection:8080/maccaption"我指的是图像名称而不是我在 docker-compose.yml 文件中定义的服务名称。

更改 url 以查看服务名称而不是图像名称纠正了这个问题,我现在可以在我的 dockerized 环境中进行 API 调用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Docker Compose循环容器链接

来自分类Dev

docker-compose +外部容器

来自分类Dev

Docker-compose 链接容器

来自分类Dev

使用mysql和自己的docker容器运行docker-compose

来自分类Dev

试图找到 docker-compose 远程 API

来自分类Dev

如何从单独的Docker容器中调用ASP.NET Core Web API端点

来自分类Dev

在多容器docker-compose设置中,我应该添加什么作为api地址?

来自分类Dev

如何使用 Docker-Compose 将多个 Web Api 容器部署到 Azure

来自分类Dev

卷和docker-compose

来自分类Dev

Docker-compose和pdb

来自分类Dev

Jenkins和docker-compose

来自分类Dev

Docker Compose与React和Nginx

来自分类Dev

docker-compose 和部署

来自分类Dev

Docker Compose和Rabbitmq Docker映像插件

来自分类Dev

Docker-compose和Docker-swarm

来自分类Dev

Docker --add-host 和 Docker compose

来自分类Dev

从docker ui容器调用到api容器

来自分类Dev

如何从在 docker compose 中的不同端口上运行的另一个烧瓶容器调用一个容器的端点?

来自分类Dev

从docker-compose文件初始化postgres容器

来自分类Dev

Docker Compose中服务和容器之间的区别

来自分类Dev

Docker compose 无法为 postgresql 和 redis 创建容器

来自分类Dev

从主机解析docker-compose容器名称

来自分类Dev

使用docker-compose设置容器时区

来自分类常见问题

在docker compose中更改容器端口

来自分类Dev

docker-compose up容器开始订购

来自分类Dev

容器名称的Docker-Compose问题

来自分类Dev

通过docker-compose重新使用容器

来自分类Dev

docker compose的问题:找不到容器命令

来自分类Dev

在docker compose中更改容器端口