通过容器互联搭建一个wordpress
博客系统。wordpress
系统是需要连接到数据库上的,所以wordpress
和mysql
的镜像都是需要的。wordpress
在创建过程中需要指定一些参数。创建mysql
容器时需要把mysql
的数据保存在宿主机本地。
[root@docker ~]# docker run -tid \
--name db \
--restart always \
-v /root/db:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=rootroot \
-e MYSQL_DATABASE=wordpress \
mysql
# /root/db是本地宿主机目录,无需提起创建,执行上述命令时会自动创建出来
[root@docker ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e8a28631ac7 mysql "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 3306/tcp, 33060/tcp db
[root@docker ~]# docker inspect db
......
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "832db6b8b12f8b969c04f53768cb8ff51d421c9d14d273dbc54797b4f2f9e051",
"EndpointID": "cdee5e5b8e9d28c638b7b27b8a30d4c73900c86c0a9c6fdfa32eccad07dad216",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2", # 数据库的连接地址
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02",
"DriverOpts": null
登录数据库查看创建的wordpress
数据库:
[root@docker ~]# yum install -y mariadb
[root@docker ~]# mysql -u root -h172.17.0.2 -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.27 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
MySQL [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.009 sec)
数据库数据保存到了宿主机的本地:
[root@docker ~]# ls /root/db/
auto.cnf binlog.index client-key.pem ib_buffer_pool ibtmp1 performance_schema server-key.pem wordpress
binlog.000001 ca-key.pem def92ba0b44e.err ibdata1 '#innodb_temp' private_key.pem sys
binlog.000002 ca.pem '#ib_16384_0.dblwr' ib_logfile0 mysql public_key.pem undo_001
binlog.000003 client-cert.pem '#ib_16384_1.dblwr' ib_logfile1 mysql.ibd server-cert.pem undo_002
当数据库创建好之后,创建wordpress的时候,需要指定数据库的一些参数:
● WORDPRESS_DB_HOST
:博客系统要连接到哪台主机上(DB所在的容器上)
● WORDPRESS_DB_USER
:博客系统要使用哪个用户对接
● WORDPRESS_DB_PASSWORD
:连接数据库的密码是什么
● WORDPRESS_DB_NAME
:连接的数据库名称
如下方式有一个严重的弊端,就是数据库一旦重建,那么IP地址就会变化,将会导致wordpress博客无法使用
docker run -tid \
--name blog \
-v /root/web:/var/www/html \
-p 80:80 \
-e WORDPRESS_DB_HOST=172.17.0.2 \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=rootroot \
-e WORDPRESS_DB_NAME=wordpress \
wordpress
[root@docker ~]# docker rm -f blog
需要加一个参数--link
来防止数据库重建后IP地址的变化问题:
docker run -tid \
--name blog \
-v /root/web:/var/www/html \
-p 80:80 \
--link db:db_alias \
-e WORDPRESS_DB_HOST=db_alias \
-e WORDPRESS_DB_USER=root \
-e WORDPRESS_DB_PASSWORD=rootroot \
-e WORDPRESS_DB_NAME=wordpress \
wordpress
# 上面启动的数据库名称是db,启动wordpress给连接的数据库起一个别名叫db_alias,WORDPRESS_DB_HOST使用别名db_alias连接数据库
博客数据保存到了宿主机的本地:
[root@docker ~]# ls /root/web/
index.php wp-activate.php wp-comments-post.php wp-config-sample.php wp-includes wp-login.php wp-signup.php
license.txt wp-admin wp-config-docker.php wp-content wp-links-opml.php wp-mail.php wp-trackback.php
readme.html wp-blog-header.php wp-config.php wp-cron.php wp-load.php wp-settings.php xmlrpc.php
如果再重建数据库容器,
db
这个名称不能变,别名可以随意起
接下来开始安装部署博客系统:
下一个安装界面没有提示需要输入连接数据库的信息,就说明我们上面的步骤是正确的(因为上面的步骤已经配置了连接数据库的信息)