我尝试使用docker-compose和nginx来建立一个wordpress环境,问题是我不能让nginx使用wordpress index.php,即使我覆盖了默认的.conf并将我的wordpress文件结构挂载到/var/www/html。
下面是yml文件的相关部分:
version: '3'
networks:
wordpress:
services:
site:
platform: linux/arm64/v8
build:
context: .
dockerfile: nginx.dockerfile
container_name: nginx
ports:
- 8080:80
- 8443:443
volumes:
- ./wordpress:/var/www/html:delegated
depends_on:
- php
- mysql
networks:
- wordpress
这里我将wordpress
文件夹挂载到我用nginx.dockerfile创建的/var/www/html
文件夹中:
FROM nginx:stable-alpine
ADD ./nginx/default.conf /etc/nginx/conf.d/default.conf
RUN mkdir -p /var/www/html
下面是我的默认.conf文件:
upstream php {
server unix:/tmp/php-cgi.socket;
server php:9000;
}
server {
listen 8080;
listen [::]:8080;
server_name localhost;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
server {
listen 8443;
listen [::]:8443;
server_name localhost;
root /var/www/html;
index index.php;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi.conf;
fastcgi_intercept_errors on;
fastcgi_pass php;
}
location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
expires max;
log_not_found off;
}
}
我测试的内容:
Someone on stackoverflow也有同样的问题,答案似乎很清楚,但不幸的是它不起作用。
当运行docker-compose run --rm site cat /etc/nginx/conf.d/default.conf
时,它会打印出我的默认.conf文件,并且我还确认我的WordPress结构与index.php在文件夹/var/www/html中。
我还测试了重命名配置文件,删除docker该高速缓存并从头开始重建所有内容,但nginx并不在意,而是加载它自己的配置文件。
Some people on Github建议将php容器名称改为类似php-box 1的名称以避免混淆,但这也没有帮助。
谢谢你的帮助。
1条答案
按热度按时间mqkwyuun1#
所以我想明白了。首先,如果欢迎消息仍然显示是因为浏览器的缓存。清除该高速缓存后,我得到了一个
ERR_EMPTY_RESPONSE
。问题是在docker-compose.yml
文件中,为了将8080端口绑定到80,我写了8080:80
而不是80:8080
。我希望它能帮助那里的人。