如何使用 laradock 和 docker-compose 版本 3 为 nginx 容器分配静态 ip

How to assign a static ip for an nginx container using laradock and docker-compose version 3

我在本地开发环境中使用 laradock

我有一个 soap 服务器 @ (soap.localhost.com) 使用 php-fpm 使用来自 nginx 容器 @ (api.localhost.com) 的 WSDL 文件的情况。

php-fpm 容器不知道 nginx 容器的 IP 地址,除非我将其硬编码到 docker-[=25 的 php-fpm 部分=]

      extra_hosts:
        - "dockerhost:${DOCKER_HOST_IP}"
        - "api.localhost.com:xxx.xxx.xxx.xxx"

每次我重新启动容器时,nginx 容器的 IP 地址都会改变,所以我需要以某种方式分配一个静态 IP 地址,这样我就不必不断地对 extra_hosts 部分进行硬编码。

Laradock 已经定义了 2 个网络接口:

networks:
  frontend:
    driver: bridge
  backend:
    driver: bridge

最终:不是为 NGINX 容器分配静态 IP,而是将域添加到 extra_hosts: 部分到 PHP_FPM 容器。 我在 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}${APP_CODE_CONTAINER_FLAG}
        - ${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 
        - memcached       
      networks:
        frontend:              
        backend:
         aliases:
          - api.localhost.com