Докер, изменив имя службы с PHP на другое, возвращает 503 Недоступных сервиса

#php #docker #apache #docker-compose

Вопрос:

У меня есть docker-compose.yml, который выглядит так.

 version: "3.6"
services:
  php:
   build: './php/'
   ports:
     - 9000:9000
   networks:
     - backend
   volumes: 
     - .puppet_projectspnamepname:/var/www/html/pname
  apache_pname:
    build: './apache/'
    depends_on:
      - php
    ports: 
      - "80:80"
    networks:
      - frontend
      - backend
    volumes: 
      - .puppet_projectspnamepname:/var/www/html/pname
networks:
  frontend:
  backend:
 

И когда я запускаю docker-проект compose up работает правильно, но после смены php на ie. php_pname Я получаю 503 Недоступных сайта

 version: "3.6"
services:
  php_pname:
   build: './php/'
   ports:
     - 9000:9000
   networks:
     - backend
   volumes: 
     - .puppet_projectspnamepname:/var/www/html/pname
  apache_pname:
    build: './apache/'
    depends_on:
      - php_pname
    ports: 
      - "80:80"
    networks:
      - frontend
      - backend
    volumes: 
      - .puppet_projectspnamepname:/var/www/html/pname
networks:
  frontend:
  backend:
 

Что вызывает ошибку. Как я могу это исправить? Нужно ли мне настраивать имя службы на php без его изменения?

Ответ №1:

Я полагаю, вы используете Apache2 в качестве прокси-сервера, и он настроен для передачи запросов в php службу. При изменении имени службы также изменяется внутренняя DNS-запись в Docker, поэтому Apache больше не может ее найти php .

Вы можете либо отразить изменение в конфигурации Apache, либо добавить псевдоним в php службу, чтобы дать ей второе имя:

 services:
  php_pname:
   build: './php/'
   ports:
     - 9000:9000
   networks:
     backend:
       aliases:
         - php
 

Таким образом, вы можете получить доступ к сервису php_pname из backend сети с помощью обоих php_pname и php .