云原生Kubernetes系列 | 通过容器互联搭建wordpress博客系统

云原生Kubernetes系列 | 通过容器互联搭建wordpress博客系统

通过容器互联搭建一个wordpress博客系统。wordpress系统是需要连接到数据库上的,所以wordpressmysql的镜像都是需要的。wordpress在创建过程中需要指定一些参数。创建mysql容器时需要把mysql的数据保存在宿主机本地。

javascript 复制代码
[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是本地宿主机目录,无需提起创建,执行上述命令时会自动创建出来
javascript 复制代码
[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
javascript 复制代码
[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 数据库:

javascript 复制代码
[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)

数据库数据保存到了宿主机的本地:

javascript 复制代码
[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博客无法使用

javascript 复制代码
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
javascript 复制代码
[root@docker ~]# docker rm -f blog

需要加一个参数--link来防止数据库重建后IP地址的变化问题:

javascript 复制代码
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连接数据库

博客数据保存到了宿主机的本地:

javascript 复制代码
[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这个名称不能变,别名可以随意起

接下来开始安装部署博客系统:

下一个安装界面没有提示需要输入连接数据库的信息,就说明我们上面的步骤是正确的(因为上面的步骤已经配置了连接数据库的信息)

相关推荐
http阿拉丁神猫11 分钟前
kubernetes知识点汇总19~24
云原生·容器·kubernetes
IT界的老黄牛12 分钟前
RocketMQ 5.x 集群部署实战:3 台机器搞定 2 主 2 从,Docker Host 模式一把梭
docker·容器·rocketmq
lpruoyu27 分钟前
【云原生】kustomize_常见的部署方式
云原生
春日见40 分钟前
UniAD的逻辑,与传统自动驾驶的差异
人工智能·windows·git·机器学习·docker·容器·自动驾驶
乐观的Terry43 分钟前
Docker 部署 RocketMQ 5.1.0 踩坑实录:从超时到 Console 连不上的完整解决之路
docker·容器·rocketmq
切糕师学AI1 小时前
K8s中的控制器模式(Controller Pattern)
容器·kubernetes
sanyii3131311 小时前
k8s工作负载-Deployment的参数与灰度发布
云原生·容器·kubernetes
fajianchen1 小时前
如何设计微服务统一认证中心
微服务·云原生·架构·iam
大鹏说大话1 小时前
云原生深水区:2026 年 Serverless 函数计算落地实战与成本极致优化
云原生·serverless
道清茗1 小时前
【Kubernetes知识点问答题】常规维护管理操作 / ETCD 备份与恢复
docker·kubernetes·etcd