云原生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这个名称不能变,别名可以随意起

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

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

相关推荐
LQ深蹲不写BUG22 分钟前
微服务事务管理利器:Seata 核心原理与实践指南
微服务·云原生·架构
nathan05291 小时前
Kubernetes 实战练习指南
云原生·容器·kubernetes
無名之輩2 小时前
Nvidia Device Plugin入门二之envvar策略
kubernetes
云和数据.ChenGuang3 小时前
微服务技术栈
微服务·云原生·架构
syty20203 小时前
K8s是什么
容器·kubernetes·dubbo
江团1io05 小时前
微服务雪崩问题与系统性防御方案
微服务·云原生·架构
Evan Wang6 小时前
使用Terraform管理阿里云基础设施
阿里云·云原生·terraform
向上的车轮6 小时前
基于go语言的云原生TodoList Demo 项目,验证云原生核心特性
开发语言·云原生·golang
灵犀物润7 小时前
Kubernetes 配置检查与发布安全清单
安全·容器·kubernetes
360智汇云7 小时前
k8s交互桥梁:走进Client-Go
golang·kubernetes·交互