项目目录中的tree命令输出显示以下布局。
其中的代码文件夹包含标准的wordpress文件,而db文件夹用于将容器sql数据映射到主机目录。
docker-compose.yml的内容如下所示:
mariadb:
container_name: lemp-mariadb
image: mariadb
environment:
- MYSQL_ROOT_PASSWORD=root.maria
- MYSQL_DATABASE=wordpress
- MYSQL_USER=wordpress
- MYSQL_PASSWORD=wordpress
volumes:
- ./db:/var/lib/mysql
phpfpm:
container_name: lemp-fpm
image: php:7-fpm
volumes:
- ./code:/code
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
links:
- mariadb
command: docker-php-ext-install mysqli
nginx:
container_name: lemp-nginx
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./code:/code
- ./site.conf:/etc/nginx/conf.d/default.conf
links:
- phpfpm
command: nginx -g 'daemon off;'
及以下是显示nginx配置的site.conf文件。
server {
listen 80;
root /code;
index index.php index.html index.htm;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
include fastcgi_params;
fastcgi_pass phpfpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
当我运行docker-compose up -d并按下http://localhost:8080时,它显示502错误的网关错误。
为什么不起作用?我希望它显示Wordpress安装页面。
docker ps
好吧,问题似乎出在phpfpm服务部分的Coommand步骤上。
command: docker-php-ext-install mysqli
如果我在docker-compose文件中注释此行并运行它,容器也会出现并进行连接,但是我必须通过此命令将其手动安装在fpm节点上
docker exec lem-fpm docker-php-ext-install mysqli
&
docker-compose restart
,我得到了wp-installation页面,但这不方便,扼杀了自动化和容器化的全部目的,我希望此过程实现自动化,所以请告诉我是否有办法通过docker-compose使它工作只有吗?
答案 0 :(得分:2)
创建一个shell脚本(start.sh),将其放在docker-compose.yml旁边并使其可执行:
#!/bin/bash
docker-php-ext-install mysqli
php-fpm
将其映射到服务内部并更改命令:
phpfpm:
container_name: lemp-fpm
image: php:7-fpm
volumes:
- ./code:/code
- ./start.sh:/usr/local/bin/start.sh
environment:
WORDPRESS_DB_HOST: mariadb
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
links:
- mariadb
command: /usr/local/bin/start.sh
答案 1 :(得分:0)
您应该将“ ./code”映射为“ / var / www / code”之类的内容,而不是“ / code”。然后在site.conf中更改根目录:“ root / var / www / code”。
我从上一个打印屏幕中看到,您被重定向到了/ code,这不应该发生。您其余的配置看起来不错。
您也可以在官方页面上看到很好的参考:https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/