docker compose中nginx多主机间的通信

docker compose中nginx多主机间的通信,docker,nginx,docker-compose,Docker,Nginx,Docker Compose,我有一个docker的作品是这样的: version: "3" networks: LEMP: services: nginx: image: nginx:latest ports: - "8080:80" - "80:80" - "443:443" - "3333:3333" volumes: - /var/www:/var/www - ./nginx-conf/server1.loca

我有一个docker的作品是这样的:

version: "3"

networks:
  LEMP:

services:
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
      - "80:80"
      - "443:443"
      - "3333:3333"
    volumes:
      - /var/www:/var/www
      - ./nginx-conf/server1.local.conf:/etc/nginx/conf.d/server1.local.conf
      - ./nginx-conf/server2.local.conf:/etc/nginx/conf.d/server2.local.conf
    depends_on:
      - php
    networks:
      - LEMP
    extra_hosts:
      - "server1.local:127.0.0.1"
      - "server2.local:127.0.0.1"
  php:
    build: ./php
    restart: always
    volumes:
      - /var/www:/var/www
    ports:
      - "9000:9000"
    networks:
      - LEMP
  mysql:
    image: mysql:5.7
    restart: always
    ports:
      - "3306:3306"
    depends_on:
      - nginx
    environment:
      - MYSQL_ROOT_PASSWORD=my_password
    volumes:
      - db:/var/lib/mysql
    networks:
      - LEMP
  redis:
    image: redis:alpine
    restart: always
    ports:
      - "6379:6379"
    networks:
      - LEMP

volumes:
  db:
PHP Dockerfile:

FROM php:7.1-fpm

RUN docker-php-ext-install pdo pdo_mysql

WORKDIR /var/www
如果我尝试从浏览器/邮递员访问server1.local或server2.local,它可以正常工作,但是如果我尝试从server1.local访问server2.local(restapi),它无法访问它

我读过,但当然不能使用我的PC IP,因为配置将共享给其他同事。

我知道nginx代理,但最后一个需要在项目所在的位置设置其他服务,但在我的例子中,我只有存储在/var/www/中的git项目,所以我应该如何从/var/www中的文件夹开始设置它们?例如,server2.local同时具有php和本地主机(localhost:3333)的内部反向代理。我应该从php映像开始,安装node.js/pm2,运行它们吗?这对我来说似乎有点奇怪。

您想用server1和server2实现什么?如果您有3个节点(nginx、server1、server2)应该协同工作,为什么不将这三个节点放在同一个docker compose中,在同一个网络中,它们将通过服务名称相互看到?它们在同一个网络中,同一个docker compose和同一个“服务”(nginx),如上面的示例所示。他们只是nginx的主机。server1.local.conf读取“server1.local”和“server2.local.conf读取”server2.local“。如果我不能更好地解释自己,看看这个讨论,他也有同样的问题:他们不在同一个docker compose文件中。从你发布的内容来看,你有单独的文件处理php,对吗?我现在已经阅读了您列出的讨论,我的问题与这一部分直接相关:“您可以通过docker compose和容器的“命名”网络使这一点变得更容易…”引用的讨论。在我看来,您处于相同的位置,好像您有需要通信的数据库+api容器=>命名服务,相同网络,相同docker compose=>它们通过服务名称彼此看到…它仅从我的docker compose中提取了该部分,请原谅。我用完整的docker-compose更新了它。您需要使用中讨论的别名