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

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

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

相关推荐
专家大圣1 小时前
云原生信息安全:筑牢数字化时代的安全防线
安全·云原生
方圆师兄2 小时前
docker快速搭建kafka
docker·容器·kafka
小的~~3 小时前
k8s使用本地docker私服启动自制的flink集群
docker·flink·kubernetes
诚诚k4 小时前
docker存储
运维·docker·容器
数据智能老司机4 小时前
Kubernetes从入门到精通系列——外部 DNS 和全局负载均衡
云原生·容器·kubernetes
NiNg_1_2345 小时前
使用Docker Compose一键部署
运维·docker·容器
FLGB5 小时前
Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
大数据·flink·kubernetes
萠哥啥都行5 小时前
Linux安装Docker以及Docker入门操作
运维·docker·容器
汀、人工智能6 小时前
修改Docker默认存储路径,解决系统盘占用90%+问题(修改docker root dir)
docker·容器
吃面不喝汤666 小时前
如何配置和使用自己的私有 Docker Registry
运维·docker·容器