多个项目在一个laradocker中出现的互访不同情况解决方案

见这篇文章可以使用 Laradock 搭建基于 Docker 的 PHP 开发环境

通过上面那篇文章就可以成功搭建开发环境。

一 解决多个项目在一个容器中出现的访问不了的情况:

在开发过程中遇到了一个问题,在一个容器里运行了两个项目,项目B想要访问项目A的接口,出现访问不通的情况。在容器workspace里用curl http://a.test也访问不了。经过排查后,找到如下的解决方法。

思路如下:

  1. 在nginx里配置两个conf,a.conf和b.conf。直接把default复制过去也行,然后改端口和项目地址两处,和上篇文章里提到的配置的方式一样。然后在a.conf里监听80端口,在b.conf里监听8009端口。(也可以是其他端口号)

2.修改docker-compose.yml文件。找到nginx的配置,在ports处添加一个监听- "8009:8009"

### NGINX Server #########################################
    nginx:
      build:
        context: ./nginx
      ......
      ports:
        - "${NGINX_HOST_HTTP_PORT}:80"
        - "8009:8009"
        - "${NGINX_HOST_HTTPS_PORT}:443"
        - "${VARNISH_BACKEND_PORT}:81"
      depends_on:
        - php-fpm
      .......
  
  1. 在项目B请求项目A的接口地址替换成主机ip访问。例如原来的接口是:http://a.test/api/test。现在换成:http://179.32.11.92/api/test。

此处的179.32.11.92这个ip地址,是查看自己的主机的ip地址。例如主机是mac,直接在终端用ifconfig就可以查看到。

4.在主机配置/etc/hosts文件。添加

127.0.0.1  a.test
127.0.0.1  b.test

5.访问A项目,打开浏览器输入地址:http://a.test。访问B项目,打开浏览器输入地址:http://b.test:8009

你可能感兴趣的:(多个项目在一个laradocker中出现的互访不同情况解决方案)