如何内部调用 docker-compose 的 nginx 服务

问题描述:我用docker-compose搭建了三个nginx服务,在宿主机都能正常访问它们的接口,但是其中一个服务访问其他两个服务的时候接口就报错了。

Github仓库

# docker-compose.yml
# nginx
  nginx:
    image: nginx:alpine
    ports: 
      - "8080:80"
      - "9999:8888"
    expose: 
      - "8888"
      - "80"
    volumes: 
      # nginx配置
      - ./nginx/conf.d/equip.conf:/etc/nginx/conf.d/equip.conf
      - ./nginx/conf.d/org.conf:/etc/nginx/conf.d/org.conf
      - ./nginx/conf.d/portal.conf:/etc/nginx/conf.d/portal.conf
      # 代码
      - ../saas-equipment:/app/saas-equipment
      - ../saas-organization:/app/saas-organization
      - ../saas-portal:/app/saas-portal
    networks:
      - saas-webserver
  # php
  php:
    build: ./php
    volumes: 
      - ../saas-equipment:/app/saas-equipment
      - ../saas-organization:/app/saas-organization
      - ../saas-portal:/app/saas-portal
    networks: 
      - saas-webserver

注意,三个服务都是在同一个nginx容器里面

三个服务互相关系如下

如何内部调用 docker-compose 的 nginx 服务

各位大佬有什么解决办法吗

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

就是一个 nginx 容器里的不同项目互通互相访问呗. 看下这个方法,docker-compose.yml 里 nginx 容器配置 alias 参数,这样 nginx 容器里a.com,b.com域名就会指向 nginx 容器的ip

5年前 评论
Lolioy (楼主) 5年前
Lolioy (楼主) 5年前
lchola (作者) 5年前
讨论数量: 7

端口写对了吗?

5年前 评论
Lolioy (楼主) 5年前

file
需要在同一网络中

5年前 评论
Lolioy (楼主) 5年前

三个nginx networks 要一致不然容器是不能访问的,

5年前 评论
Lolioy (楼主) 5年前
QiYangXy (作者) 5年前
QiYangXy (作者) 5年前
Lolioy (楼主) 5年前
QiYangXy (作者) 5年前
Lolioy (楼主) 5年前
QiYangXy (作者) 5年前
Lolioy (楼主) 5年前
QiYangXy (作者) 5年前
Lolioy (楼主) 5年前

可以给每个配置文件分配不同的端口,访问 {nginx 容器名}:{端口} 这样的可以在容器内访问

5年前 评论
Lolioy (楼主) 5年前

虚拟域名需要配置host,域名指向nginx容器的ip,所以需要进去nginx容器查到IP,然后配置在extra_hosts

5年前 评论
Lolioy (楼主) 5年前
伍同学 (作者) 5年前
Lolioy (楼主) 5年前

就是一个 nginx 容器里的不同项目互通互相访问呗. 看下这个方法,docker-compose.yml 里 nginx 容器配置 alias 参数,这样 nginx 容器里a.com,b.com域名就会指向 nginx 容器的ip

5年前 评论
Lolioy (楼主) 5年前
Lolioy (楼主) 5年前
lchola (作者) 5年前

是curl的时候错误吗

5年前 评论
Lolioy (楼主) 5年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!