多个项目在一个laradocker中出现的互访不同情况解决方案
2021-09-01 本文已影响0人
海里的沙丁鱼
通过上面那篇文章就可以成功搭建开发环境。
一 解决多个项目在一个容器中出现的访问不了的情况:
在开发过程中遇到了一个问题,在一个容器里运行了两个项目,项目B想要访问项目A的接口,出现访问不通的情况。在容器workspace里用curl http://a.test也访问不了。经过排查后,找到如下的解决方法。
思路如下:
- 在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
.......
- 在项目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
。