如何内部调用 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 服务

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

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

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

端口写对了吗?

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

file
需要在同一网络中

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

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

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

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

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

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

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

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

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

是curl的时候错误吗

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

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