总体思路:一台虚拟机当宿主机,上面装两个docker容器,分别都和宿主机建立存储关联关系,然后开放80端口和外部通信,而mysql仅在本地。如果需要在宿主机上也隔离的话,需另外创建一个null隔离网络,然后把php的地址加进该网络。
环境:rhel7.4,+docker-ce18.09.6。
第一步,pull下来mysql和php的镜像
# systemctl start docker # docker image pull mysql:5.5 # docker pull php:7.2-apache
先运行mysql,注意:mysql在容器里root登录需要密码,这里启动时要用-e传root密码,不然启动报错。这里用-v将mysql容器的卷关联在了宿主机的/data/volumes/mysql,这样实现了服务和存储分离,即使容器被删除了,存储卷也还在。
# docker run -d --name db -v /data/volumes/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql:5.5 # docker container exec -it db /bin/sh # mysql -uroot -p
看上图是可以连上的,没有问题,exit退出。这里mysql容器没有指定网络模式,默认用的桥网络docker0,即下面的birdge。
在宿主机上执行# docker container inspect -f {{.NetworkSettings.Networks.bridge.IPAddress}} db
查看mysql的ip,我这里是172.17.0.2,记住这个ip,等下要用php访问的。
接下来部署php容器,将主机的2277端口映射到容器的80端口,用ps查看一下,两个都在运行了。
# docker run --name php -v /data/volumes/php/www:/var/www/html -p 192.168.101.10:2277:80 -d php:7.2-apache
现在来测试一下php,添加一个index.php文件。
接着访问宿主机的2277端口:192.168.101.10:2277,就能看到这个页面了
再来搭建wordpress:
先登录mysql,创建一个wordpress的用户密码,
# docker exec -it db /bin/sh # mysql -uroot -proot mysql> create database wpdb; mysql> grant all privileges on wpdb.* to wpuser@'%' identified by "123456"; mysql> exit
下载wordpress的包,解压缩到php工作目录,就可以用http://192.168.101.10:2277/wordpress访问了。
# wget https://wordpress.org/wordpress-5.2.tar.gz # tar -xzvf wordpress-5.2.tar.gz -C /data/volumes/php/www/
点击let’s go之前还有几个配置工作需要做,进入wordpress的安装目录,要有wp-config.php文件,且因为php版本高于5.0,所以在php容器中需要安准mysqli,还有php需要连接mysql的脚本。
# cd /data/volumes/php/www/wordpress/ # cp wp-config-sample.php wp-config.php #vim wp-config.php # docker exec -it php /bin/bash # apt-get updatwe # apt-get install libpng-dev # cd /usr/local/bin/ # ./docker-php-ext-install gd mysqli # ./docker-php-ext-enable gd mysqli # docker restart php # sed -i "s/mysql_connect/mysqli_connect/g" /data/volumes/php/www/wordpress/wp-includes/wp-db.php
下面是 wp-config.php修改的部分
这里用上了mysql容器的ip。
现在再点击let’s go,进入如下页面,填入一些基本信息
再点击安装,就可以使用了。
原文链接:https://blog.csdn.net/u013272574/article/details/93853200