Назад | Перейти на главную страницу

Контейнер Wordpress Docker перенаправляет мой запрос с порта 8000 на порт 80

Я пытаюсь перенести свой блог wordpress с хостера на свой сервер. Я хотел использовать докер для этой задачи.

На моем сервере работает nginx, на котором размещен ряд служб, не имеющих отношения к этому вопросу. Я использую следующий сценарий для создания контейнера.

#!/bin/bash

docker create --name blog \
--net bridge \
-e WORDPRESS_DB_HOST=192.168.170.11 \
-e WORDPRESS_DB_USER=USER \
-e WORDPRESS_DB_PASSWORD=PASSWORD \
-e WORDPRESS_DB_NAME=wordpress \
-v /var/www/wordpress:/var/www/html \
-p 8000:80 \
wordpress

Соединение с БД работает, и apache2 работает. Но я не могу получить доступ к wordpress.

Когда я пытаюсь получить доступ localhost:8000, перенаправляет меня в порт 80 где слушает nginx. Зачем? Я хочу подключиться к порту 80 (apache2) внутри контейнера.

То же самое, когда я пробую это извне (если брандмауэр не работает).

Еще одна проблема - межсетевой экран: порт 8000 / tcp открыт для всех IP-адресов, но мои запросы извне по-прежнему заблокированы. Что мне нужно открыть для этого контейнера докеров?

Бег Docker version 17.05.0-ce, build 89658be на Debian Stretch.

Редактировать:

root@server:~/docker# curl -v http://localhost:8000
* Rebuilt URL to: http://localhost:8000/
*   Trying ::1...
* TCP_NODELAY set
* Connected to localhost (::1) port 8000 (#0)
> GET / HTTP/1.1
> Host: localhost:8000
> User-Agent: curl/7.52.1
> Accept: */*
> 
< HTTP/1.1 301 Moved Permanently
< Date: Mon, 12 Feb 2018 20:08:48 GMT
< Server: Apache/2.4.25 (Debian)
< X-Powered-By: PHP/7.2.1
< Set-Cookie: PHPSESSID=b03c4c1ba164bef366c49e1b1b5abc1c; path=/
< Expires: Thu, 19 Nov 1981 08:52:00 GMT
< Cache-Control: no-store, no-cache, must-revalidate
< Pragma: no-cache
< Set-Cookie: PHPSESSID=7293f22e5c860504a429b070d0ad21e4; path=/
< Location: http://localhost/
< Content-Length: 0
< Content-Type: text/html; charset=UTF-8
< 
* Curl_http_done: called premature == 0
* Connection #0 to host localhost left intact

У меня нет клея, который меня сюда пересылает. Apache2 находится внутри докера. Файла .htaccess нет, и я не изменял изображение.

На минуту остановите свой nginx, запустите этот контейнер с docker run -p 80:80 [...]. Тогда ваш браузер сможет получить доступ к http: // localhost / wp-admin /; должно быть свойство, называемое что-то вроде "URL сайта". Измените это на http://localhost:8000/ и сохраните.

Это заставит Wordpress перенаправить (он будет использовать HTTP 301) любого посетителя на http://localhost:8000/ прослушивает ли Apache этот порт.

затем docker commit вашу настройку и запустите зафиксированный образ с docker run -p 8000:80 [...]

Отредактируйте wp-config.php Файл конфигурации

Можно указать URL-адрес сайта вручную в wp-config.php Файл конфигурации.

Добавьте эти две строки в свой wp-config.php, где example.com - это домен вашего сайта.

define( 'WP_HOME', 'http://example.com' );
define( 'WP_SITEURL', 'http://example.com' );