我有这个docker-compose文件来设置WordPress开发环境。挑战是根据日志一切正常运行,但是WordPress没有加载URL: localhost:9000。
version: '3.9'
services:
db:
container_name: 'mysql8.0'
image: 'mysql:8.0.32'
volumes:
- ./data/mysql:/var/lib/mysql
command: mysqld --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
restart: always
tty: true
ports:
- 18766:3306
expose:
- '18766'
environment:
- MYSQL_ROOT_PASSWORD
- MYSQL_DATABASE
- MYSQL_USER
- MYSQL_PASSWORD
networks:
- wp
wordpress:
container_name: 'wordpress-app'
depends_on:
- db
image: 'wordpress:6.2.0-php8.2-fpm'
ports:
- 9000:80
- 443:443
environment:
- WORDPRESS_DB_HOST
- WORDPRESS_DB_USER
- WORDPRESS_DB_PASSWORD
- WORDPRESS_DB_NAME
- WORDPRESS_CONFIG_EXTRA
volumes:
- "./wordpress:/var/www/html"
- "./wp-content:/var/www/html/wp-content"
networks:
- wp
phpmyadmin:
depends_on:
- db
image: phpmyadmin:5.2.1-fpm
restart: always
ports:
- 8080:80
environment:
- PMA_HOST
- MYSQL_ROOT_PASSWORD
networks:
- wp
networks:
wp:
driver: bridge
docker ps
的输出
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f9b98c82125 wordpress:6.2.0-php8.2-fpm "docker-entrypoint.s…" 5 minutes ago Up 5 minutes elastic_rosalind
6e17a7fddc25 phpmyadmin:5.2.1-fpm "/docker-entrypoint.…" 33 minutes ago Up 7 minutes 9000/tcp, 0.0.0.0:8888->80/tcp, :::8888->80/tcp first-plugin-phpmyadmin-1
3bc899ca693e wordpress:6.2.0-php8.2-fpm "docker-entrypoint.s…" 33 minutes ago Up 7 minutes 0.0.0.0:443->443/tcp, :::443->443/tcp, 9000/tcp, 0.0.0.0:9500->80/tcp, :::9500->80/tcp wordpress-app
2fb6f5614931 mysql:8.0.32 "docker-entrypoint.s…" 33 minutes ago Up 7 minutes 18766/tcp, 33060/tcp, 0.0.0.0:18766->3306/tcp, :::18766->3306/tcp mysql8.0
运行curl:
curl -v localhost:9500
* Trying 127.0.0.1:9500...
* Connected to localhost (127.0.0.1) port 9500 (#0)
> GET / HTTP/1.1
> Host: localhost:9500
> User-Agent: curl/7.81.0
> Accept: */*
>
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by pee
使用netstat检查
sudo netstat -tulpn | grep LISTEN 17:46:48
[sudo] password for davidshare:
tcp 0 0 0.0.0.0:18766 0.0.0.0:* LISTEN 19727/docker-proxy
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 19901/docker-proxy
tcp 0 0 0.0.0.0:8888 0.0.0.0:* LISTEN 19849/docker-proxy
tcp 0 0 0.0.0.0:9500 0.0.0.0:* LISTEN 19868/docker-proxy
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1461/cupsd
tcp 0 0 127.0.0.53:53 0.0.0.0:* LISTEN 1233/systemd-resolv
tcp6 0 0 :::18766 :::* LISTEN 19733/docker-proxy
tcp6 0 0 :::443 :::* LISTEN 19912/docker-proxy
tcp6 0 0 :::80 :::* LISTEN 1628/apache2
tcp6 0 0 :::1716 :::* LISTEN 10204/kdeconnectd
tcp6 0 0 127.0.0.1:9614 :::* LISTEN 10216/java
tcp6 0 0 ::1:631 :::* LISTEN 1461/cupsd
tcp6 0 0 :::9000 :::* LISTEN 20905/php-fpm: mast
tcp6 0 0 :::8888 :::* LISTEN 19856/docker-proxy
tcp6 0 0 :::9500 :::* LISTEN 19876/docker-proxy
我已尝试更改端口。
我不确定是什么问题。我需要帮助。
码头工人日志:
docker logs wordpress-app
[02-Apr-2023 16:19:05] NOTICE: fpm is running, pid 1
[02-Apr-2023 16:19:05] NOTICE: ready to handle connections
[02-Apr-2023 16:35:35] NOTICE: Finishing ...
[02-Apr-2023 16:35:35] NOTICE: exiting, bye-bye!
[02-Apr-2023 16:44:32] NOTICE: fpm is running, pid 1
[02-Apr-2023 16:44:32] NOTICE: ready to handle connections
你的配置面临的问题是,你使用的图像(wordpress:6.2.0-php8.2-fpm)只公开端口9000作为FastCGI服务,而不是作为HTTP服务。你不能向它发出HTTP请求。这是PHP FPM图像的通常行为。
你需要添加一个webserver (apache或nginx)容器连接到FPM服务,以获得HTTP响应。
尝试将此添加到您的配置中:
nginx:
image: 'nginx'
restart: unless-stopped
container_name: 'nginx'
ports:
- 80:80
- 443:443
volumes:
- "./wordpress:/var/www/html"
networks:
- wp
这可能是你Wordpress使用的图片。
例如,我已经尝试了你的docker-compose文件,切换到最新的Wordpress, MySQL和phpmyadmin图像,我没有任何问题,跨越它们的连接。
还要确保删除作为卷放在目录中的data、Wordpress、wp-content目录。