1、环境

系统版本:CentOS Linux release 7.4.1708

docker版本:docker-ce-18.09

主机IP:192.168.121.121

2、载入MySQL和PHP镜像

$ docker pull mysql

$ docker pull php:7.2-apache

3、创建网络

$ docker network create lamp
6549dbc105bba9e51d4d0b13df7ae17916c3628f5a07c81551203fb63c15892e

查看网络

$ docker network ls
NETWORK ID NAME DRIVER SCOPE
be6ab252106a bridge bridge local
3f26bc9f85e3 host host local
6549dbc105bb lamp bridge local
7f2db0f13ffc none null local

4、创建生成mysql和php容器的脚本

$ vi docker_lamp.sh
#!/bin/bash
function mysql()
{
docker run --name mysql --net lamp -p : \
-v /data/docker/mysql/data:/var/lib/mysql \
-v /data/docker/mysql/conf:/etc/mysql/conf.d \
-v /data/docker/mysql/logs:/logs \
-e MYSQL_ROOT_PASSWORD=Test1234 \
-d mysql:latest --character-set-server=utf8
} function httpd_php()
{
docker run --name httpd-php --net lamp -p : \
-v /data/docker/httpd/conf:/etc/apache2/sites-enabled \
-v /data/docker/www:/var/www/html \
-v /data/docker/httpd/logs:/var/log/apache2 \
-d php:7.2-apache
}
$

5、启动mysql和php容器

$ sh docker_lamp.sh mysql
9c2362b5e32f24bd9e21ae13f8accb6d35c359621dc5b5e36a273d1e64424920 $ sh docker_lamp.sh httpd_php
d466d5de8d133343d3e591b598c4f5b5958618e47f841ebfeaa81cae56ad6139

查看容器

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d466d5de8d13 php:7.2-apache "docker-php-entrypoi…" seconds ago Up second 0.0.0.0:->/tcp httpd-php
9c2362b5e32f mysql:latest "docker-entrypoint.s…" seconds ago Up seconds 0.0.0.0:->/tcp, /tcp mysql

6、写测试页面进行测试

为目录赋权

# chown -R dkuser:dkuser /data

写测试页面

$ echo "<?php phpinfo();?>" > /data/docker/www/index.php

浏览器访问地址 192.168.121.121 ,出现 PHP 的页面就说明是OK的。

7、修改mysql密码加密方式为mysql_native_password

$ vi /data/docker/mysql/conf/docker_mysql.conf
[mysqld]
default-authentication-plugin=mysql_native_password

8、数据库操作

登陆mysql容器,创建、配置wordpress数据库

$ docker exec -it mysql /bin/bash
root@9c2362b5e32f:/# chown -R mysql:mysql /var/lib/mysql
root@9c2362b5e32f:/# mysql -uroot -pTest1234
mysql> create database wordpress;
mysql> create user wps@localhost identified by '';
mysql> grant all privileges on wordpress.* to wps@localhost;
mysql> create user wps@172.18.0.1 identified by '';
mysql> grant all privileges on wordpress.* to wps@172.18.0.1;
mysql> alter user wps@172.18.0.1 identified with mysql_native_password by '';

9、配置wordpress博客系统

9.1、下载wordpress包并解压

$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz

$ tar -zxf wordpress-4.9.-zh_CN.tar.gz -C /data/docker/www

9.2、修改wordpress配置

$ cd /data/docker/www/wordpress/
$ vi wp-config-sample.php
/** WordPress数据库的名称 */
define('DB_NAME', 'wordpress'); /** MySQL数据库用户名 */
define('DB_USER', 'wps'); /** MySQL数据库密码 */
define('DB_PASSWORD', ''); /** MySQL主机 */
define('DB_HOST', '192.168.121.121'); /** 创建数据表时默认的文字编码 */
define('DB_CHARSET', 'utf8'); /** 数据库整理类型。如不确定请勿更改 */
define('DB_COLLATE', '');
$ mv wp-config-sample.php wp-config.php

9.3、修复问题

从PHP5.0开始不推荐使用mysql_connect()函数,从PHP7.0开始就废弃了该函数,替代的函数是mysqli_connect(),下面是解决办法:

进入php容器安装mysqli扩展

$ docker exec -it httpd-php /bin/bash
root@d466d5de8d13:/var/www/html# apt-get update
root@d466d5de8d13:/var/www/html# apt-get install libpng-dev
root@d466d5de8d13:/var/www/html# cd /usr/local/bin/
root@d466d5de8d13:/usr/local/bin# ./docker-php-ext-install gd mysqli
root@d466d5de8d13:/usr/local/bin# ./docker-php-ext-enable gd mysql

退出容器,重启容器

$ docker restart httpd-php

替换方法

$ cd /data/docker/www/wordpress
$ sed -i "s/mysql_connect/mysqli_connect/g" wp-includes/wp-db.php

9.4、打开wordpress页面进行配置

打开页面 http://192.168.121.121/wordpress ---> 在出现的页面点击 “现在就开始”  ---> 填写下面所示的数据库信息:

数据库名 wordpress
用户名 wps
密码 123456
数据库主机 192.168.121.121
表前缀 wp_

---> 点击 “安装WordPress” ---> 点击 “登陆” ---> 使用账户和密码登陆博客,之后就可以进入博客页面,进而对博客进行管理了。

参考:

https://blog.51cto.com/andyxu/2177116

最新文章

  1. C#/VB.NET 获取电脑属性(硬盘ID、硬盘容量、Cpu序列号、MAC地址、系统类型)
  2. 转 powerdesigner12.5在64位JDK下连接mysql数据库问题
  3. Muzli – 所有你需要的设计灵感都在这
  4. hdu 4759 Poker Shuffle 二进制
  5. I*k-&gt;AK
  6. iOS --- 取整数
  7. Linux下mysql数据库root无法登录的情况
  8. android file.createnewfile ioexception
  9. Cocos2d-x3.0之路--02(引擎文件夹分析和一些细节)
  10. ctf中常见注入题源码及脚本分析
  11. phython编写图形界面
  12. rpcz VC2010 构建
  13. CSAPP:第十一章 网络编程
  14. 持续代码质量管理-SonarQube-7.3部署
  15. day26 Python __getattribute__
  16. OO生存指.....抱歉无法生存
  17. centos 6.5升级内核到3.1
  18. jQuery性能优化的一些参考建议
  19. JavaScript和它父亲的故事
  20. zabbix已恢复正常,但是报警信息一直出现,求大佬解答。

热门文章

  1. Linux替换文件行首的空白字符
  2. win10 虚拟机VMware 14中CentOS7文件共享
  3. JSON对象排序并生成URL参数
  4. Laravel groupBy用法
  5. EcShop二次开发学习方法和Ecshop二次开发必备基础
  6. CSS Id 和 Class
  7. java中获取类加载路径和项目根路径的5种方式分析
  8. [参考]C# JSON字符串序列化与反序列化
  9. Servlet源码分析
  10. docker容器的常见操作