Docker,将服务名称从 PHP 更改为不同的 returns 503 服务不可用

Docker, changing service name from PHP to different returns 503 Service Unavailable

我有 docker-compose.yml 看起来像这样。

version: "3.6"
services:
  php:
   build: './php/'
   ports:
     - 9000:9000
   networks:
     - backend
   volumes: 
     - .\puppet_projects\pname\pname:/var/www/html/pname
  apache_pname:
    build: './apache/'
    depends_on:
      - php
    ports: 
      - "80:80"
    networks:
      - frontend
      - backend
    volumes: 
      - .\puppet_projects\pname\pname:/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_projects\pname\pname:/var/www/html/pname
  apache_pname:
    build: './apache/'
    depends_on:
      - php_pname
    ports: 
      - "80:80"
    networks:
      - frontend
      - backend
    volumes: 
      - .\puppet_projects\pname\pname:/var/www/html/pname
networks:
  frontend:
  backend:

什么原因导致错误。我该如何解决?我是否必须将服务名称设置为 php 而不更改它?

我假设您使用 Apache2 作为代理,并且配置为将请求传递给 php 服务。当您更改服务名称时,它在 Docker 中的内部 DNS 记录也会更改,因此 Apache 无法再找到 php

您可以在 Apache 配置中反映更改,或者为 php 服务添加一个别名以赋予它第二个名称:

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

这样您就可以使用 php_pnamephpbackend 网络访问服务 php_pname