laradock多项目互相访问的问题

/ 6评 / 1

问题

laravdock能够非常方便的创建开发环境,但在开发中,我们可能需要多个项目互相访问。

例如,我们有aaa.devbbb.dev两个项目,aaa.dev需要请求bbb.dev项目的某些接口

由于docker容器的隔离,我们是不能够直接访问的。此时如果在aaa.dev使用GuzzleHttp访问bbb.dev的接口,就会得到如下错误:

cURL error 7: Failed to connect to bbb.dev port 80: Connection refused

这篇文章主要探讨怎么怎么解决这个问题。

解决

一开始找到的方案都是通过添加php-fpmextra_hosts的配置来实现的,这种方案比较麻烦,配置好后还需要需要rebuild wordspacephp-fpm两个容器,这里主要介绍一种更加简单的方法。

找到docker-compose.ymlnginx配置

nginxnetworks配置如下:

networks:
        - frontend
        - backend

将其修改为:

networks:
        frontend:
         aliases:
          - bbb.dev
        backend:
         aliases:
          - bbb.dev

此配置是运行时配置,不需要rebulid,执行docker-compose up -d nginxrecreate容器,配置就能生效

nginx模块完整配置如下

### NGINX Server #########################################
    nginx:
      build:
        context: ./nginx
        args:
          - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
          - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
          - CHANGE_SOURCE=${CHANGE_SOURCE}
      volumes:
        - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
        - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
        - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
        - ${NGINX_SSL_PATH}:/etc/nginx/ssl
      ports:
        - "${NGINX_HOST_HTTP_PORT}:80"
        - "${NGINX_HOST_HTTPS_PORT}:443"
      depends_on:
        - php-fpm
      networks:
        frontend:
         aliases:
          - bbb.dev
        backend:
         aliases:
          - bbb.dev

到这里基本就解决这个问题了,同时aliases配置的是个数组意味我们可以配置很多个项目来实现我们在laradock中多项目的互相访问。

关于此问题更多的信息可以关注laradockissue#435,本篇文章的解决方案也来自于此issue中iceheat的回复,对于extra_hosts的配置也有讨论,可以自行摸索。

6条回应:“laradock多项目互相访问的问题”

  1. Just008说道:

    这个问题很早就碰见了。。找了一大圈也找不到怎么解决就放弃了~ laradock

  2. 无名说道:

    棒,为啥我每次找答案都不能精准的定位到问题

  3. forecho说道:

    我也遇到过这种场景,不过今天才知道解决办法 ?

发表评论

电子邮件地址不会被公开。 必填项已用*标注