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 3306:3306 \ -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 80:80 \ -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 } $1
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…" 3 seconds ago Up 1 second 0.0.0.0:80->80/tcp httpd-php 9c2362b5e32f mysql:latest "docker-entrypoint.s…" 24 seconds ago Up 22 seconds 0.0.0.0:3306->3306/tcp, 33060/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 '123456'; mysql> grant all privileges on wordpress.* to wps@localhost; mysql> create user wps@172.18.0.1 identified by '123456'; 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 '123456';
9、配置wordpress博客系統
9.1、下載wordpress包並解壓
$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz $ tar -zxf wordpress-4.9.4-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', '123456'); /** 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