码头集装箱和本地卷帘电话
我无法在同一台服务器上的两个码头集装箱之间进行cURL调用。码头集装箱和本地卷帘电话
你会发现,所有正在运行的容器:
“仪表板”容器主机可以互通与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"]
你看到超时的原因是一些防火墙规则(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容器和主机名以将其应用于您的方案。
发布您的码头撰写文件 –
@TarunLalwani:刚刚编辑了问题。你有想法吗? – Xavierh95
您是否使用'docker run'单独运行每个容器?你应该使用'docker-compose'你的案例。此外' - 链接'现在已被弃用,并显示被避免,因为它将在即将到来的版本中被删除 –