当前位置: 首页 > news >正文

容器化部署案例一wordpress

容器化部署案例一wordpress

wordpress容器化部署

为什么要容器?
为的是容器提供的隔绝的名称空间,彻底解决软解依赖错误,特别是php这种语言,经常性的需要等新,出现漏洞等,以及太多的版本,太多的依赖,难以管理,将你的宿主机搞得一团糟。容器化过后,太香了。

具体如何描述容器化的迁移?

1.便于快速的更新,因为php后端是不是出现一个版本的漏洞,需要等新php依赖等操作。

但是更新就是等于挖大坑,你一堆的服务依赖某一个服务依赖某一个LNMP环境运行,牵一发而动全身。

2.因此使用容器化部署后后利用,wordpress镜像,运行多个容器实例,基于nginx的反向代理,完成负载均衡,slb,后续的更新,只需要更新,提交一个新的镜像,秒级内就可以升级出一个新的容器后端。

3.足够的安全,应用部署在容器环境内,在禁止特权模式下,对宿主机也是一种保护。

  1. 整体架构性能得到大幅度提升,效率提升。

容器化wordpress访问流程

  1. 容器化部署架构,宿主机的namespace安装nginx提供的LB(反向代理)以及iptables实现数据包的转发,以及提供服务器保护
  2. nginx的LB也是网关功能,所有的服务需要经过nginx的允许后,才能进入到容器内。
  3. nginx也需要做反向代理,以及对于http信息的校验,也会加入到https的安全校验
  4. 以此实现一个安全的容器化应用环境。

在这里插入图片描述

容器化部署wordprress

mysql配置

cat >  my.cnf <<'EOF'
[mysqld]
port=3306
user=mysql
character_set_server=utf8mb4
collation-server=utf8mb4_general_ci[mysql]
socket=/tmp/mysql.sock
EOF# 1.直接再宿主机部署mysql,更为合理# 2.基于centos基础镜像,构建mariadb数据库镜像环境--restart=always# 运行mysql的容器
docker run \
--restart=always \--name blog_mysql -d \
-v /wordpress-docker/db/:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD="linux0224" \
-v /wordpress-docker/conf/:/etc/mysql \
-d mysql:5.7.25# 执行了xxxx命令,xxx脚本启动数据库服务端,if 该变量为空,mysqld,且echo 提示你要设置xxxx变量,才能运行

在这里插入图片描述

# 也就是启动容器时传入变量
# 也就是启动脚本时看看别人写的变量名也要保障正确
MYSQL_USER='wordpress_user'
MYSQL_PASSWORD='wordpress_pwd'
MYSQL_DATABASE='wordpress'[root@docker-110 wordpress-docker]# tree
.
├── conf
│   └── my.cnf
└── db
# 查看docker 启动时的日志日志信息[root@docker-110 wordpress-docker]# docker logs -f blog_mysql# 最终的脚本命令
docker run \
--restart=always \--name blog_mysql -d \
-v /new_mysql_data:/var/lib/mysql    \
-e MYSQL_ROOT_PASSWORD="linux0224"  \
-e MYSQL_USER='wordpress_user'  \
-e MYSQL_PASSWORD='wordpress_pwd' \
-e MYSQL_DATABASE='wordpress' \
-v /wordpress-docker/conf/:/etc/mysql  \
-d mysql:5.7.25

phpadmin

拿掉新的镜像的时候,我们该如何去用,传入什么参数或者说是环境变量才能正确的启动

  1. 可以进入到容器看看启动的脚本
docker run -it  --rm  --name blog_phpadmin  phpmyadmin
  1. 可以看看dockerhub给你了什么资料

https://hub.docker.com/_/phpmyadmin\

  1. docker history

docker run 去分析入口的脚本,启动脚本,都调用那些变量

# 启动php-admin 连接数据库
docker run  --restart=always  --link blog_mysql --name blog_phpadmin -d -e PMA_HOST=blog_mysql phpmyadmin

wordpress

docker run -d --link blog_mysql --restart=always --name blog_wordpress \
-v /wordpress-docker/html:/var/www/html \
wordpress # 提供好lnp的wordpress环境了,代码,php版本都是适配的

检查3个应用容器

[root@docker-200 /wordpress-docker/html]#docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                 NAMES
748d2e63ec01   wordpress      "docker-entrypoint.s…"   3 seconds ago    Up 3 seconds    80/tcp                blog_wordpress
215e25e8b63e   phpmyadmin     "/docker-entrypoint.…"   18 minutes ago   Up 18 minutes   80/tcp                blog_phpadmin
2a305837c140   mysql:5.7.25   "docker-entrypoint.s…"   40 minutes ago   Up 40 minutes   3306/tcp, 33060/tcp   blog_mysql# 批量获取容器主机名和id,格式化输出
--format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'
https://pkg.go.dev/text/template# 提取容器IP的格式化玩法[root@docker-200 /wordpress-docker/html]#docker inspect --format='{{.NetworkSettings.Networks.bridge.IPAddress}}'  blog_mysql
172.17.0.2# 简单玩法, 基于key 提取value,格式化主机名,容器ip
[root@docker-200 /wordpress-docker/html]#docker inspect --format='{{.Name}}   {{.NetworkSettings.Networks.bridge.IPAddress}}'  `docker ps -aq`
/blog_wordpress   172.17.0.4
/blog_phpadmin   172.17.0.3
/blog_mysql   172.17.0.2

接入网关,让nginx跑起来

1.部署服务
yum install nginx -y2.准备好七层代理配置文件,基于应用层的转发代理,http层代理,http协议,url,port等
[root@docker-200 /wordpress-docker/html]#docker inspect --format='{{.Config.ExposedPorts}}' blog_wordpress  
map[80/tcp:{}]

在这里插入图片描述

我们看看phpadmin

在这里插入图片描述

这个就是wordpress后台的页面信息

http://www.xdnf.cn/news/978877.html

相关文章:

  • 递归法解N叉树的后序遍历
  • 若依微服务Openfeign接口调用超时问题
  • Java面向对象编程(OOP)深度学习解析
  • Flutter布局系统全面解析:从基础组件到复杂界面构建
  • ttyd:安全地通过网络共享您的 Linux 终端
  • Cpp 知识3
  • github action推送-构建准备步骤获取私有dockerhub镜像仓库镜像的一系列错误尝试
  • Solidity 开发从入门到精通:语法特性与实战指南
  • 在Linux下使用vscode使用交叉编译工具链的gdb对core文件进行堆栈、变量查看
  • Ubuntu下编译安装DLib的GPU版本并实现人脸检测和人脸关键点检测
  • “十五五”时期智慧城市赋能全国一体化数据市场建设:战略路径与政策建议[ 注:本建议基于公开政策文件与行业实践研究,数据引用截至2025年6月11日。]
  • 商品中心—3.商品可采可补可售的技术文档下
  • 前端面试宝典---事件循环面试题
  • 小白学Pinia状态管理
  • STM32G DMA串口发送接收
  • Linux开发工具之VsCode(Filezila、MobaXterm、Vim三合一)
  • 【笔记】NVIDIA AI Workbench 中安装 cuDNN 9.10.2
  • 每日Prompt:人像写真
  • 内存泄漏系列专题分析之二十:camx swap内存泄漏实例分析
  • Babylon.js引擎(二)
  • 【Chipyard】 conda 环境安装与使用
  • k8s在节点上加污点
  • k8s 部署服务常见错误原因
  • Windows 安装 Maven
  • 1Panel 部署 OpenResty + Redis 实现 IP 动态封禁教程
  • 软考 系统架构设计师系列知识点之杂项集萃(87)
  • Visual Studio 2022 运行提示:未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序。
  • jsoncpp ubuntu编译问题
  • Proof of Talk专访CertiK联创顾荣辉:全周期安全方案护航Web3生态
  • Cilium动手实验室: 精通之旅---22.Cilium Traffic Optimization