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

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

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

相关推荐
AAA@峥2 小时前
容器数据不丢失:Docker 分层存储 + Volume 共享、备份迁移完整指南
运维·docker·容器
十年磨一剑~4 小时前
docker 为何每次 docker tag才能 docker push
docker·容器·eureka
gs801406 小时前
记一次多 Agent 架构在单节点 K8s 触发的 PID 耗尽与 Pod 驱逐(Evicted)大摸排
容器·架构·kubernetes
bukeyiwanshui6 小时前
20260701 k8s Metric Server
容器·贪心算法·kubernetes
江湖有缘7 小时前
基于Docker环境部署tillywork开源工作管理工具
docker·容器·开源
鸿儒5179 小时前
MR-50国产化GPU docker配置方法
docker·容器·mr
Zhu75810 小时前
在k8s集群部署ApacheHadoop单节点单数据副本
云原生·容器·kubernetes
Akamai中国10 小时前
Akamai收购安全企业浏览器提供商LayerX
人工智能·云原生·云计算·云服务
摇滚侠11 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 51-60
java·云原生·kubernetes