Docker容器和本地cURL调用
我很难在相同服务器上的两个docker容器之间进行cURL调用 您将找到正在运行的所有容器: “dashboard”容器承载可通过URL访问的webapp “api”容器承载另一个可通过URL访问的webapp 我无法从仪表板容器中对进行cURL调用。我每次都有一个超时错误 可能是路由问题或其他问题 目前唯一有效的方法是使用“本地表示法”对URL进行卷曲 我在docker run命令中使用多个DockerFile 你能帮我一下吗?谢谢 PS:URL被伪造了,不要试着叫它们:DDocker容器和本地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
编辑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
现在已被弃用,并且将避免显示,因为它将在即将发布的版本中删除