wordpress漏洞相对较多,我的服务器帮朋友挂了网站。之前是直接挂在host上,现在迁移到了docker里。记录一下迁移wordpress到docker里需要注意的问题。

wordpress docker image

wordpress官方的docker image有很多不同的版本。比如fpm版本就是只有php和wordpress,而默认的则带着apache webserver。 其次,所有的image都没有数据库。

https://gist.github.com/FindHao/03e807fe46ebcbdb4349046e8f0317d8

上面的docker-compose文件,先定义了一个db的container,使用了mysql5.7,并且从环境变量里读取数据库的密码。然后定义了一个wordpress的container。注意image的名字只有wordpress。设置环境变量,尤其是WORDPRESS_DB_HOST。一开始在这里绕了很多弯路。host的mysql是无法直接连接的,因为默认mysql只能是localhost访问,但是docker的container和host是不同的网络的。(不要开放mysql端口给0.0.0.0) 再一个,映射wp-content时,一定要只映射这个目录,因为它的wordpress是定制的。或者说它的wp-config.php是定制的。主要还是数据库的链接问题。

webserver

自己添加webserver会出现一些稀奇古怪的问题,尽管reference里digitalocean使用了这个方法,但是我测试的时候,发现一直出现权限的问题,因为nginx的container和wordpress的container使用了不同的用户(www-data和nginx)。所以最好直接使用wordpress image里自带的apach就好。

修改原来的host上的nginx conf:

upstream wordpress {
        server localhost:9101;
}

server
    {
        listen 80;
        listen [::]:80;
        server_name XXX;
        index index.html index.htm index.php default.html default.htm default.php;

    root /a/root/path;

    location / {
        proxy_read_timeout    90;
        proxy_connect_timeout 90;
        proxy_redirect        off;
        proxy_pass http://wordpress;
        proxy_set_header      X-Real-IP $remote_addr;
        proxy_set_header      X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header      Host $host;
    }

    location ~ /\.ht {
        deny all;
    }
}

文件夹权限

wp-content一定要chown -R www-data.www-data ./*,要不然没法在wordpress后台更新文件。

数据库导入导出和备份

外部host数据库导出:

mysqldump -uroot  -p mywebsite.com > mywebsite_com.sql

导入到docker里:

docker exec -i db mysql -u root -pyourpassword  mywebsite.com < mywebsite_com.sql

从docker里导出数据库

docker exec -i db mysqldump -u root -ppyourpassword --all-databases > mywebsite_com_docker.sql

Reference

https://www.digitalocean.com/community/tutorials/how-to-install-wordpress-with-docker-compose https://blog.csdn.net/u012577474/article/details/106224625 https://forums.docker.com/t/nginx-on-host-system-as-proxy-for-wordpress-container/137058


文章版权归 FindHao 所有丨本站默认采用CC-BY-NC-SA 4.0协议进行授权|
转载必须包含本声明,并以超链接形式注明作者 FindHao 和本文原始地址:
https://findhao.net/easycoding/2620.html

Comments