2017-10-06 33 views
0

我無法在同一臺服務器上的兩個碼頭集裝箱之間進行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'你的案例。此外' - 鏈接'現在已被棄用,並顯示被避免,因爲它將在即將到來的版本中被刪除 –

回答

0

你看到超時的原因是一些防火牆規則(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容器和主機名以將其應用於您的方案。