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

时间:2019-07-03 22:59:25

标签: docker-compose laradock

我将laradock用于本地开发环境

我有一种情况,我有一个肥皂服务器@(soap.localhost.com)使用php-fpm从nginx容器@(api.localhost.com)消耗WSDL文件。

除非我将其硬编码为docker-comopose.yml的php-fpm部分,否则php-fpm容器不知道nginx容器的IP地址

      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

1 个答案:

答案 0 :(得分:0)

最后:不要将静态IP分配给NGINX容器,而是将域添加到PHP_FPM容器的extra_hosts:部分。 我已经将别名添加到了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