Связь с docker контейнером из другого docker контейнера - PullRequest
0 голосов
/ 12 апреля 2020

Это мой docker -компонентный файл.

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 conf-файл, если он необходим.

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 контейнера? Можно ли общаться с bash оболочки docker?

1 Ответ

1 голос
/ 12 апреля 2020

Вы можете открыть bash контейнера docker с паром

docker exec -it <CONTAINER_ID> bash

и выполнить команду curl для другого контейнера, если в вашем контейнере есть curl, в противном случае вам необходимо установить его

curl foo01:5000

Но я думаю, что проблема в файле docker -compose.yml, вы не указали порт 5000 для foo01 и выставили его.

...