为什么这个简单的解决方案不起作用?
我尝试将 WordPress 的目录挂载到 nginx Web 服务器上的目录,但是当我切换到 localhost:80 时,出现错误:找不到文件。
Wordpress 文件在网络服务器上可见,我使用“ls”命令检查了这一点。 docker exec -it webserver sh ls /var/www 一切正常,里面有一个wordpress目录和文件。但在浏览器中,他仍然看不到它们!它返回一个文件未找到错误。有什么问题吗?
docker-compose.yml
version: '3.7'
services:
wordpress:
image: wordpress:5.1.1-fpm-alpine
container_name: wordpress
volumes:
- wordpress_volume:/var/www/html
networks:
- app-network
webserver:
depends_on:
- wordpress
image: nginx:1.15.12-alpine
container_name: webserver
ports:
- "80:80"
volumes:
- wordpress_volume:/var/www/wordpress
- ./nginx-conf:/etc/nginx/conf.d
networks:
- app-network
volumes:
wordpress_volume:
networks:
app-network:
driver: bridge
nginx.conf
server {
listen 80;
listen [::]:80;
index index.php index.html index.htm;
root /var/www/wordpress;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
我发现wordpress工作文件夹和nginx根文件夹必须是相同的路径。 因此,只需在 WordPress 和 nginx 容器中保留默认路径 /var/www/html 即可,或者如果您想更改 WordPress 容器工作路径,请使用此工作目录:/var/www/wordpress。
版本:'3.7'
服务: WordPress: 图片:wordpress:5.1.1-fpm-alpine 容器名称:wordpress working_dir: /var/www/wordpress # 添加此内容以更改工作目录 卷: - wordpress_volume:/var/www/wordpress 网络: - 应用程序网络
网络服务器: 取决于: - WordPress 图片:nginx:1.15.12-alpine 容器名称:网络服务器 端口: - “80:80” 卷: - wordpress_volume:/var/www/wordpress - ./nginx-conf:/etc/nginx/conf.d 网络: - 应用程序网络
体积: wordpress_volume:
网络: 应用程序网络: 司机:桥