Как назначить статический ip для контейнера nginx, используя laradock и docker-compose version 3 - PullRequest
0 голосов
/ 04 июля 2019

Я использую laradock для локальной среды разработки

У меня есть случай, когда у меня есть мыльный сервер @ (soap.localhost.com), использующий файл WSDL из контейнера nginx @ (api.localhost.com) с использованием php-fpm.

Контейнеру php-fpm не известен ip-адрес контейнера nginx, если я жестко не закодирую его в секции php-fpm docker-comopose.yml

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

Каждый раз, когда я перезапускаю контейнеры, меняется IP-адрес контейнера nginx, поэтому мне нужно как-то назначить статический IP-адрес, чтобы мне не приходилось постоянно жестко кодировать раздел extra_hosts.

Laradock уже определяет 2 сетевых интерфейса:

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

1 Ответ

0 голосов
/ 08 июля 2019

ЗАКЛЮЧИТЕЛЬНО: Вместо назначения статического IP-адреса для контейнера NGINX и добавления доменов в раздел 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
...