码头集装箱和本地卷帘电话

问题描述:

我无法在同一台服务器上的两个码头集装箱之间进行cURL调用。码头集装箱和本地卷帘电话

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

here

“仪表板”容器主机可以互通与URL https://www.myapp.com/

“API”容器托管了另一个Web应用程序可到达的URL https://api.myapp.com web应用程序

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

也许有路由问题或别的什么?

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

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

你能帮我解答吗?谢谢 !

PS:网址已被伪造,不要试图打电话给他们:d


编辑了1添加dockerfile/INIT:

我运行下面开始我的搬运工实例cmd:

docker run -t -d -p“80:80”-p“443:443”--dns“8.8.8.8”--dns“8.8.4.4”--link“dashboard-dev “ - 链接”仪表板“ - 链接”API“ - 链接”媒体“ - 链接”前“阿帕奇”

这里是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"] 
+0

发布您的码头撰写文件 –

+0

@TarunLalwani:刚刚编辑了问题。你有想法吗? – Xavierh95

+0

您是否使用'docker run'单独运行每个容器?你应该使用'docker-compose'你的案例。此外' - 链接'现在已被弃用,并显示被避免,因为它将在即将到来的版本中被删除 –

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

将您的容器放在同一个码头网络上,并使用码头网络来谈谈容器到容器(而不是使用链接)。然后在网络上为容器使用别名,以便连接容器到容器,但使用外部地址。这里有一个我从具有网络别名的traefik容器中得到的例子,“代理”网络预先创建了docker network create -d overlay proxy(这是用于群集模式,所以如果你只在单个主机上运行这些模块,请删除-d overlay)。

这里是我的泊坞窗,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容器的代理网络上的任何其他容器。将traefik替换为您自己的apache容器和主机名以将其应用于您的方案。