Docker容器和本地cURL调用

Docker容器和本地cURL调用,curl,docker,dockerfile,Curl,Docker,Dockerfile,我很难在相同服务器上的两个docker容器之间进行cURL调用 您将找到正在运行的所有容器: “dashboard”容器承载可通过URL访问的webapp “api”容器承载另一个可通过URL访问的webapp 我无法从仪表板容器中对进行cURL调用。我每次都有一个超时错误 可能是路由问题或其他问题 目前唯一有效的方法是使用“本地表示法”对URL进行卷曲 我在docker run命令中使用多个DockerFile 你能帮我一下吗?谢谢 PS:URL被伪造了,不要试着叫它们:D 编辑1添加do

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

您将找到正在运行的所有容器:

“dashboard”容器承载可通过URL访问的webapp

“api”容器承载另一个可通过URL访问的webapp

我无法从仪表板容器中对进行cURL调用。我每次都有一个超时错误

可能是路由问题或其他问题

目前唯一有效的方法是使用“本地表示法”对URL进行卷曲

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

你能帮我一下吗?谢谢

PS:URL被伪造了,不要试着叫它们:D


编辑1添加dockerfile/init:

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

docker run-t-d-p“80:80”-p“443:443”--dns“8.8.8.8”--dns“8.8.4.4”--链接“dashboard dev”--链接“dashboard”--链接“api”--链接“media”--链接“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 networking对容器进行通信(而不是使用链接)。然后使用网络上容器的别名将容器连接到容器,但使用外部地址。下面是我从一个网络别名为“proxy”的traefik容器获得的示例“网络是使用
docker network create-d overlay proxy
预先创建的(这是用于swarm模式,因此如果您仅在单个主机上运行这些代理,请删除
-d overlay

以下是my 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容器。将traefik替换为您自己的apache容器和主机名,以便将其应用于您的场景。

发布您的docker composefile@TarunLalwani:刚刚编辑了这个问题。您有什么想法吗?是否使用
docker run
单独运行每个容器?您应该使用
docker compose
编写您的案例。另外,
--link
现在已被弃用,并且将避免显示,因为它将在即将发布的版本中删除