【问题标题】:Communicate with a docker container from another docker container从另一个 docker 容器与一个 docker 容器通信
【发布时间】:2020-04-12 07:08:20
【问题描述】:

这是我的 docker-compose 文件。

version: "3.7"
services:
  foo01:
    shm_size: "1000000000"
    build:
      context: ./foo
    tty: true
    volumes:
      - "./foo/src:/tmp/"
  foo02:
    shm_size: "1000000000"
    build:
      context: ./foo
    tty: true
    volumes:
      - "./foo/src:/tmp/"
  nginx:
    build: ./nginx
    tty: true
    links:
      - foo01
      - foo02
    ports:
      - "80:80"

如果需要,这是我的 nginx 配置文件。

events { worker_connections 1024; }

http {

 proxy_headers_hash_max_size 1024;
 proxy_headers_hash_bucket_size 64;

 upstream TestApp {
    # References to our app containers, via docker compose
    server foo01:5000;
    server foo02:5000;
 }

 server {
    listen 80;
    server_name domain.com;
    location / {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Real-IP  $remote_addr;
      #   proxy_redirect off;
        proxy_buffers 8 24k;
        proxy_buffer_size 4k;
        proxy_pass http://TestApp;
        proxy_set_header Host $host;
    }
  }
}

我的问题是,一旦我构建并运行 docker-compose,如何检查 foo01:5000 是否可以从我的 nginx docker 容器中访问?是否可以从 docker 的 bash shell 进行通信?

【问题讨论】:

    标签: docker nginx docker-compose dockerfile


    【解决方案1】:

    您可以将 docker 容器的 bash 作为休闲方式打开

    docker exec -it <CONTAINER_ID> bash
    

    如果你的容器中有curl,则对其他容器执行curl命令,否则你必须安装它

    curl foo01:5000
    

    但我认为问题出在 docker-compose.yml 文件中,您没有为 foo01 指定端口 5000 并公开它。

    【讨论】:

    • 我使用了 curl foo01:5000 并且得到了一个 html 响应(来自 foo01 的 html)。所以,这意味着它可以到达,对吧?对不起,但我是新手。 :)
    • 是的,如果您收到响应,则可以从 nginx 容器访问它
    猜你喜欢
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-24
    • 2017-07-12
    • 2016-06-20
    • 1970-01-01
    相关资源
    最近更新 更多