做个临时站点 从未学过 docker 听说很方便 于是看了几篇网上教程 复制粘贴后稍作修改 目前情况是:docker-compose 能运行, 各容器能运行,网站能打开 phpinfo,phpmyadmin 能连接上 mariadb 。但是安装 wordpress 时,已经用 phpmyadmin 建了数据库和用户授权。但安装页面填好数据库用户名等信息提交后,提示“There has been a critical error on this website.” 哪位能指点下 可能是哪里出问题了?下面是配置文件 不知道有没有写错的地方?
[目录结构]
|—— html
|—— index.php
|—— mariadb
|—— conf.d
|—— db
|—— logs
|—— nginx
|—— conf.d
|—— domain
|fullchain.cer & domain.key
|—— default.conf
|—— logs
|—— nginx.conf
|—— php
|—— logs
|—— Dockerfile
|—— docker-compose.yml
[ Dockerfile ]
FROM php:7.4-fpm-alpine
Run apt install iputils-ping \
&& docker-php-ext-install mysqli && docker-php-ext-enable mysqli && docker-php-ext-install pdo pdo_mysql
[ docker-compose.yml ]
version: '3'
networks:
lnmp-net:
driver: bridge
services:
mariadb:
container_name: mariadb
image: mariadb:10.4
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: xxxxxx
volumes:
- /lnmp/mariadb/db:/var/lib/mysql
- /lnmp/mariadb/conf.d:/etc/my.cnf.d
- /lnmp/mariadb/logs:/var/log/mariadb
restart: always
networks:
- lnmp-net
nginx:
container_name: nginx
image: nginx:latest
ports:
- 80:80
- 443:443
volumes:
- /lnmp/html:/usr/share/nginx/html
- /lnmp/nginx/nginx.conf:/etc/nginx/nginx.conf
- /lnmp/nginx/conf.d:/etc/nginx/conf.d
- /lnmp/nginx/logs:/var/log/nginx
depends_on:
- mariadb
- php
restart: always
networks:
- lnmp-net
php:
container_name: php
build: ./php
image: php:7.4-fpm-alpine
ports:
- 9000:9000
volumes:
- /lnmp/html:/var/www/html
- /lnmp/php/php.ini:/usr/local/etc/php/php.ini
- /lnmp/php/logs:/usr/local/var/log
restart: always
networks:
- lnmp-net
phpmyadmin:
container_name: phpmyadmin
image: phpmyadmin/phpmyadmin
ports:
- 2000:80
restart: always
environment:
PMA_HOST: mariadb
networks:
- lnmp-net
[/lnmp/nginx/conf.d/default.conf ]
......
root /usr/share/nginx/html;
index index.html index.htm index.php;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
1
foMM 2021-02-17 19:40:50 +08:00
|
2
Showfom 2021-02-17 19:43:39 +08:00
安装 WordPress 的时候,hostname 写 mariadb 镜像的内网 IP 地址试试?
|
3
jaleo OP @Showfom ip 是 172.21.0.2 试了还是一样
好像网上的教程大多只涉及到上面的程度 看来没有系统性的学习 临时突击真不行 |
4
Yourshell 2021-02-17 20:14:25 +08:00
wordpress 开 debug 模式看看
|
5
shahaier 2021-02-17 20:19:14 +08:00
使用 mariadb 这个名字试试
|
6
mxalbert1996 2021-02-17 20:40:58 +08:00 via Android
project 内部通信的 host 用 service 名
|
7
jaleo OP @mxalbert1996
@shahaier 数据库的 service 名是 mariadb 吗? 创建用户名时 CREATE USER 'user'@'localhost' 这个 localhost 也要用 service 名吗? |
8
mxalbert1996 2021-02-17 22:14:56 +08:00 via Android
@jaleo 我建议你去读一遍文档看看 @ 后面这个 host 到底是什么意思。另外创建用户一般用环境变量: https://hub.docker.com/_/mariadb
|