Я пытаюсь перенести свой блог 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' );