gpt4 book ai didi

curl - Docker容器和本地cURL调用

转载 作者:行者123 更新时间:2023-12-02 19:34:59 29 4
gpt4 key购买 nike

我很难在同一服务器上的两个docker容器之间进行cURL调用。

您会发现所有正在运行的容器:

here

“仪表板”容器托管可通过URL https://www.myapp.com/访问的Web应用

“api”容器托管另一个可通过URL https://api.myapp.com访问的Web应用程序

我无法从仪表板容器中对https://api.myapp.com进行cURL调用。我每次都遇到超时错误。

也许存在路由问题或其他问题?

目前唯一可行的方法是使用“本地符号” http://air360-api:8082/对URL进行 curl 。

我在docker run命令中使用了多个DockerFile。

您能帮我一下吗?谢谢 !

PS:URL已被伪造,请勿尝试将其称为:D

编辑1 添加dockerfile / init:

我通过运行以下cmd启动docker实例:

docker run -t -d -p“80:80” -p“443:443” --dns“8.8.8.8” --dns“8.8.4.4” --link“dashboard-dev” --link“dashboard” --link“api” --link“media” --link“front” apache“

这里是API容器的dockerfile。与仪表盘dockerfile相同,只是项目不同:

FROM microsoft/dotnet:2.0-sdk

# Install dependencies
RUN apt-get update -y
RUN apt-get install -y python-pip python-setuptools python-dev build-essential
RUN pip install --upgrade pip
RUN pip install ua-parser --no-cache-dir

# Set environment variables
ENV ASPNETCORE_URLS="http://*:8082"
ENV ASPNETCORE_ENVIRONMENT="Development"

# Copy files to app directory
COPY . /app

# Set working directory
WORKDIR /app/API-Project

# Restore NuGet packages
RUN ["dotnet", "restore"]

# Open up port
EXPOSE 8082

# Run the app
ENTRYPOINT ["dotnet", "run"]

最佳答案

您看到超时的原因可能来自某些防火墙规则(iptables)。解决方案是通过从容器到外部地址/端口来“不要这样做”。只要您在容器内部和外部的端口匹配(例如,将容器中的端口80映射到主机上的80),就可以对容器完全透明地进行更改。

将您的容器放在相同的docker网络上,并使用docker网络与容器到容器对话(而不是使用链接)。然后为网络上的容器使用别名,以使用外部地址将容器连接到容器。这是我从带有网络别名的traefik容器中获得的一个示例,“代理”网络是使用docker network create -d overlay proxy预先创建的(这是针对群模式的,因此,如果仅在单个主机上运行-d overlay,则将其删除)。

这是我的docker-compose.yml的相关部分:

version: '3.3'

networks:
proxy:
external:
name: proxy

services:
traefik:
image: traefik:1.4
networks:
- proxy:
aliases:
- proxy.example.com
ports:
- target: 80
protocol: tcp
published: 80
mode: ingress

这样,代理网络上连接到“proxy.example.com”的任何其他容器都将直接进入traefik容器。用您自己的apache容器和主机名替换traefik,以将其应用于您的方案。

关于curl - Docker容器和本地cURL调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46609434/

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