Каждый открытый порт перенаправляется на 8080, как мне сопоставить порт контейнера с любым другим, а не с 8080? - PullRequest
0 голосов
/ 06 августа 2020

Проблема

У меня есть набор рабочих WordPress Docker Контейнеры Compose, которые включают изображение блога и изображение базы данных.

version: '3'
services:

  wordpress-app-db:
    build:
      context: ./mysql      
    image: wordpress-app-db:5.7-mysql
    restart: always

  php7-wordpress-app:
    depends_on:
      - wordpress-app-db
    build:
      context: ./wordpress    
    image: wordpress-app:php7    
    links:
      - wordpress-app-db
    ports:
      - "8080:80"
    restart: always

volumes:
  data:

Теперь вот выше yaml будет работать без каких-либо проблем, но когда я хочу изменить порт 8080 на какой-то другой, он просто не будет работать.

ports:
  - "<my-custom-port>:80"

По всему URL-адресу я перехожу к http://localhost:8080/.

Меня смущает его поведение, я не могу понять, почему он перенаправляется на 8080, если он был сопоставлен с другим портом <my-custom-port>.

Для info, я открыл порт 80 в Dockerfile.

Reason

Я хочу это сделать, так как я должен запустить этот набор в кластере kubernetes с nodePort, и я не могу назначить ему порт 8080 в nodePort.

Ответы [ 2 ]

2 голосов
/ 27 августа 2020

Убедитесь, что для параметров siteurl и home wp_options в вашей базе данных заданы правильные имя хоста и порт. Недавно я перенес сайт WordPress из вычислительного экземпляра LAMP в Kubernetes, используя официальные изображения WordPress, и у меня возникла точно такая же проблема.

WordPress выполнит перенаправление, если эти значения не соответствуют вашему доменному имени.

В моем случае эти два поля каким-то образом изменились во время миграции, в результате чего каждый запрос перенаправлялся на :8080. Они были изменены на localhost:8080.

1 голос
/ 07 августа 2020

Вы перепроверили целевой порт в своем служебном файле? В служебном файле будет 3 записи.

  • containerPort, который сопоставляется с внутренним перенаправлением чего-то вроде настраиваемого порта, который вы используете в своем docker -compose
  • targetPort, который сопоставляется с фактическим приложением порт, который он слушает
  • nodePort, к которому вы можете получить доступ, используя : // nodeIP: nodePort
...