Перед нами стоит задача перенести производство в среду разработки на Docker. Пока что у меня PHP и Nginx работают в отдельном контейнере, потому что нам нужно будет иметь много разных контейнеров для всех наших веб-сайтов, но одно и то же изображение nginx.
У меня есть главная страница для загрузки, но, как она выглядит, WordPress не загружает свои страницы с помощью своих пользовательских URI, а вместо этого пытается использовать URI в качестве фактического подкаталога, а затем загружает index.php
.
Я включил в нее свои nginx.conf
, docker-compose.yml
и /var/log/nginx/error.log
выходные данные.
При переносе рабочего сайта WordPress из Prod в Docker загружается только начальная страница.
Когда я перехожу на local.www.website.com
, я получаю правильный ответ: первая страница.
Когда я нажимаю на любую из под-ссылок или набираю URL: http://local.www.website.com:8080/khat/, I receive an error in the browser:
local.www.website.com отказывается подключаться.
Когда я использую curl: curl -v http://local.www.greenhousetreatment.com:8080/khat/
Я получаю 301.
Когда я проверяю журналы ошибок Nginx (/ var / log / nginx / errors.log`), я получаю:
2018/11/05 21:37:33 [error] 187#187: *45
"/var/www/website.com/current/html/khat/index.php" is not
found (2: No such file or directory), client: 172.26.0.1, server:
local.www.website.com, request: "GET /khat/ HTTP/1.1", host:
"local.www.website.com:8080"
Мой website.conf
файл nginx выглядит так:
server {
server_name local.www.website.com;
root /var/www/website.com/current/html;
index index.php;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log warn;
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
location / {
try_files $uri $uri/ /index.php?$args;
}
error_page 404 = /index.php?$args;
# include /var/www/website.com/current/app/conf/nginx/redirects.conf;
location ^~ /wp-content/uploads/ {
proxy_pass https://s3-us-west-2.amazonaws.com/website.com/uploads/;
}
location ~* ^/listings/(.*[^/])$ {
return 301 /listings/$1/;
}
# CSS and Javascript
location ~* \.(?:css|js)$ {
expires 30d;
access_log off;
add_header Cache-Control "public";
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param REMOTE_ADDR $http_x_forwarded_for;
fastcgi_param DEFAULT_REMOTE_ADDR $remote_addr;
fastcgi_param APP_ENV "prof";
fastcgi_param APP_WP_DB_NAME "website.com";
fastcgi_param APP_WP_DB_USER "root";
fastcgi_param APP_WP_DB_PASSWORD '1234';
fastcgi_param APP_WP_DB_HOST "mysql:3306";
fastcgi_param APP_WP_S3_UPLOADS_BUCKET "website.com";
fastcgi_param APP_WP_S3_UPLOADS_KEY "1234";
fastcgi_param APP_WP_S3_UPLOADS_SECRET '123/123/+123';
fastcgi_param APP_WP_S3_UPLOADS_REGION "us-west-2";
}
}
Мой контейнер nginx открыт для портов: «8080: 80», а мой php-fpm - «9000: 9000»
Вот мой docker-compose.yml
version: "3"
services:
web:
image: nginx:latest
container_name: ght-nginx
ports:
- "8080:80"
volumes:
- ./website.com/current:/var/www/website.com/current
- ./etc/nginx/sites-available/ght-nginx.conf:/etc/nginx/conf.d/site.conf
- ./website.com/shared/logs/:/var/log/nginx/
- ./etc/nginx/nginx.conf:/etc/nginx/nginx.conf
links:
- php
php:
image: php7.0-fpm-aac
container_name: ght
volumes:
- ./website.com/current:/var/www/website.com/current
- ./website.com/shared/logs/:/var/log/nginx/
- ./sites/php/sites.conf:/etc/php/7.0/fpm/pool.d/php-fpm.conf
ports:
- "9000:9000"
mysql:
image: mysql:5.7
container_name: ght-mysql
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 1234
volumes:
- ./mysql/library/:/var/lib/mysql
- ./mysql/dumps/:/tmp/mysql/dumps
Что мне не хватает? Я попытался изменить открытый порт в docker-compose на 9000:80
, я попытался добавить И удалить
location / {
try_files $uri $uri/ /index.php?$args;
}
Я попытался добавить следующий блок кода внизу wp-config.php
define('WP_HOME','http://local.www.website.com:8080');
define('WP_SITEURL','http://local.www.website.com:8080');
Я не уверен, что еще нужно сделать. Любая помощь будет принята с благодарностью.