wordpress数据存储依赖mysql数据库,以docker容器方式部署完整的wordpress博客服务,则需要从镜像仓库拉取mysql、wordpress镜像,这里选择从开源的docker hub 获取mysql 5.7版本,wordpress latest版本,同时需要准备一台具备外网环境的机器,硬件配置最好1C2G以上,当然1C1G也是没有问题的。
docker pull mysql:5.7 docker pull wordpress:latest
启动mysql数据库服务
docker run --name mysql-db -p 3306:3306 -v /data/mysql:/var/lib/mysql -d -e MYSQL_ROOT_PASSWORD=root mysql:5.7
mysql容器的名字为mysql-db,数据库文件则保存在当前机器的/data/mysql目录下,-e MYSQL_ROOT_PASSWORD以环境变量的方式设置mysql的数据库密码为root,用户名默认root,可以通过注入环境变量修改,更多参数设置请参考docker hub。命令执行成功之后,利用docker ps查询容器是否成功启动。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 95808c37fea6 mysql:5.7 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-db
当然除了以数据库文件作为备份之外,还可以通过执行msyql命令备份sql脚本数据。
docker exec mysql-db sh -c ‘exec mysqldump --databases wordpress -uroot -p"$MYSQL_ROOT_PASSWORD"‘ > wordpress.sql
数据库成功启动之后,再启动wordpress容器服务。
docker run -v /data/wordpress/wp-content:/var/www/html/wp-content --name my-wordpress --link mysql-db:db -p 80:80 -d wordpress
在/data/wordpress/wp-content目录下修改文件内容,可以马上在服务中体现,非常方便,--link 表示关联了mysql-db容器,那么在my-wordpress容器中可以通过db直接访问mysql-db,可以进入my-wordpress容器查看--link增加了hosts记录。
[root@izj6c data]# docker exec -it 46cc10552a12 sh # cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.3 db 2ea59b2d6344 mysql-db 172.17.0.4 46cc10552a12
-p指定了容器的端口映射,当前wordpress的服务通过当前机器的80端口即可访问。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46cc10552a12 wordpress "docker-entrypoint.s…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp my-wordpress
现在通过浏览器直接访问http://ip:80/,比如当前服务器的ip为192.168.3.8,那么直接访问http://192.168.3.8:80/即可访问wordpress,然后跳转到管理员配置页面。
选择简体中文,然后下一步,填写数据库配置。
数据库主机直接写db,不再用写ip了,因为在启动wordpress容器的时候,我们使用了--link 参数,这就是docker --link方便。填写配置之后,提交,这时出现下面这个错误。
这是因为我们还没有在mysql中创建数据库,进入容器中手动创建wordpress数据库。
[root@izj6c2 ~]# docker exec -it 2ea59b2d6344 sh # mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 7 Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type ‘help;‘ or ‘\h‘ for help. Type ‘\c‘ to clear the current input statement. mysql> create database wordpress default character set utf8; Query OK, 1 row affected (0.00 sec)
数据库创建成功之后,则在wordpress页面重新提交数据库配置,跟着下一步执行,即可创建完成博客系统了。
可能产生的问题
1、外部无法连接mysql数据库
方法:利用docker exec命令进入mysql容器内部,执行
USE mysql; ALTER USER ‘root‘@‘%‘ IDENTIFIED WITH mysql_native_password BY ‘你的密码‘; FLUSH PRIVILEGES;
2、目录无权限问题
因为这个wp-content目录是mount到容器内部的,即使在宿主机上chmod 777 content/*,
可能还是无法上传图片或者文件,执行以下操作即可。
docker exec -it containerId sh
chown -R www-data:www-data wp-content/*
原文地址:https://www.cnblogs.com/kingfsen/p/10424940.html