Dockerfile制作部署wordpress-6.6
目录
一. 环境准备
二. 准备对应的配置文件
三. 编写Dockerfile
四. 构建镜像
五. 配置MySQL
六. 安装wordpress
七. 扩展
一. 环境准备
| localhost | 192.168.226.25 | rocky_linux9.4 | Docker version 27.0.3 |
关闭防火墙和selinux,进行时间同步。
安装docker
# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 4: 更新并安装Docker-CE
sudo yum makecache
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start
# 验证docker
sudo docker version
下载wordpress上传至/root/目录
发行版本归档 – WordPress.org China 简体中文
https://cn.wordpress.org/download/releases/

[root@localhost ~]# ll
total 26700
-rw-r--r-- 1 root root 846 Jul 20 03:33 Dockerfile
-rw-r--r-- 1 root root 480 Jul 20 03:08 default.conf
-rw-r--r-- 1 root root 398 Jul 20 00:40 nginx.repo
-rw-r--r-- 1 root root 183 Jul 20 11:19 start.sh
-rw-r--r-- 1 root root 27323722 Jul 19 19:12 wordpress-6.6-zh_TW.zip
二. 准备对应的配置文件
nginx官方镜像源文件
[root@localhost ~]# vim /root/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
nginx的配置文件
[root@localhost ~]# vim /root/default.conf
server {listen 80;server_name localhost;location / {root /usr/share/nginx/wordpress;index index.php;}location ~ \.php$ {root /usr/share/nginx/wordpress;fastcgi_pass unix:///var/opt/remi/php80/run/php-fpm/www.sock;fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;include fastcgi_params;}error_page 500 502 503 504 /50x.html;location = /50x.html {root /usr/share/nginx/wordpress;}
}
三. 编写Dockerfile
[root@localhost ~]# vim /root/Dockerfile
FROM rockylinux:9.3LABEL \version="1.0" \description="wordpress" \maintainer="zzdict@gmail.com"WORKDIR /root/
EXPOSE 80 443# 安装 Remi 仓库和 PHP
RUN yum install -y http://rpms.remirepo.net/enterprise/remi-release-9.rpm && \yum install -y epel-release && \yum install php80-php-xsl php80-php php80-php-cli php80-php-devel php80-php-gd php80-php-pdo php80-php-mysql php80-php-fpm -y
# 复制 nginx repo 配置文件并安装 nginx
COPY nginx.repo /etc/yum.repos.d/nginx.repo
RUN yum install -y nginx# 复制 nginx 配置文件
COPY default.conf /etc/nginx/conf.d/default.conf# 复制 WordPress 并设置适当的权限
ADD wordpress-6.6-zh_CN.tar.gz /usr/share/nginx
RUN chown -R nginx:nginx /usr/share/nginx/wordpress# 复制启动脚本
COPY start.sh /start.sh
RUN chmod +x /start.sh# 设置启动命令
CMD ["/start.sh"]
创建启动服务的脚本
#!/bin/bash# 启动 PHP-FPM
/opt/remi/php80/root/usr/sbin/php-fpm
chmod 777 /var/opt/remi/php80/run/php-fpm/www.sock# 启动 Nginx
nginx -g 'daemon off;'
四. 构建镜像
[root@localhost ~]# docker build -t wordpress:v1 .[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress v1 6f9a0e03d62a 3 minutes ago 891MB#创建并启动容器
[root@localhost ~]# docker run -dit -P 6f9a0e03d62a
f0cd32e390ab49a671d44aee2c36c695a98ec3d3a62a7f15f48c35a4f26e90af[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f0cd32e390ab 6f9a0e03d62a "/start.sh" 42 seconds ago Up 42 seconds 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare
浏览器访问IP+映射的端口


五. 配置MySQL
[root@localhost ~]# docker pull mysql:8.0[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress v1 6f9a0e03d62a 7 hours ago 891MB
mysql 8.0 6c54cbcf775a 2 weeks ago 572MB[root@localhost ~]# docker run --name mysql_wordpress -e MYSQL_ROOT_PASSWORD=Qaz123456+ -e MYSQL_DATABASE=wordpress -d mysql:8.0[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d8b0b70665e mysql:8.0 "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 3306/tcp, 33060/tcp mysql_wordpress
f0cd32e390ab 6f9a0e03d62a "/start.sh" 7 hours ago Up 7 hours 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare#进入mysql容器验证是否创建成功
[root@localhost ~]# docker exec -it 5d8b0b70665e mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.38 MySQL Community Server - GPLCopyright (c) 2000, 2024, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
| wordpress |
+--------------------+
5 rows in set (0.00 sec)mysql> 按住ctrl + p + q 后台运行当前容器#查看详细信息,找到IP
[root@localhost ~]# docker inspect 5d8b0b70665e

六. 安装wordpress


注:如果出现下图中的提示,需要进入nginx的哪个容器里去编写对应的配置
对应步骤如下:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d8b0b70665e mysql:8.0 "docker-entrypoint.s…" 11 minutes ago Up 11 minutes 3306/tcp, 33060/tcp mysql_wordpress
f0cd32e390ab 6f9a0e03d62a "/start.sh" 7 hours ago Up 7 hours 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare
[root@localhost ~]# docker exec -it f0cd32e390ab /bin/bash
[root@f0cd32e390ab /]# [root@f0cd32e390ab wordpress]# vi /usr/share/nginx/wordpress/wp-config.php
#将页面提示的配置代码全部粘贴并复制到该文件里然后按ctrl + p +q 后台运行该容即可。
当配置完成后,点击执行安装程序即可。





七. 扩展
使用--link参数。
当数据库宕机了,我们重启一个数据库,那么容器的IP就会变,因此可以使用--link参数具体操作如下:
#查看镜像ID
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress v1 6f9a0e03d62a 7 hours ago 891MB
mysql 8.0 6c54cbcf775a 2 weeks ago 572MB#查看mysql容器名
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5d8b0b70665e mysql:8.0 "docker-entrypoint.s…" 32 minutes ago Up 32 minutes 3306/tcp, 33060/tcp mysql_wordpress
f0cd32e390ab 6f9a0e03d62a "/start.sh" 7 hours ago Up 7 hours 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare#重新创建一个容器,并和mysql容器名进行关联
[root@localhost ~]# docker run -dit -P --link=mysql_wordpress 6f9a0e03d62a
3ea2e9862b9a8b91c8b84e552665968a5ca6c10326ab367bd2bf602639638928[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ea2e9862b9a 6f9a0e03d62a "/start.sh" About a minute ago Up About a minute 0.0.0.0:32782->80/tcp, :::32782->80/tcp, 0.0.0.0:32783->443/tcp, :::32783->443/tcp bold_mclaren
5d8b0b70665e mysql:8.0 "docker-entrypoint.s…" 34 minutes ago Up 34 minutes 3306/tcp, 33060/tcp mysql_wordpress
f0cd32e390ab 6f9a0e03d62a "/start.sh" 7 hours ago Up 7 hours 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare
查看到了刚创建的容器端口,现在浏览器进行访问IP+映射出来的端口、


这数据库宕了,可以重新起一个数据库容器,但是要求重新起的数据库容器名要和这里填写的mysql_wordpress一致。

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ea2e9862b9a 6f9a0e03d62a "/start.sh" 9 minutes ago Up 9 minutes 0.0.0.0:32782->80/tcp, :::32782->80/tcp, 0.0.0.0:32783->443/tcp, :::32783->443/tcp bold_mclaren
5d8b0b70665e mysql:8.0 "docker-entrypoint.s…" 42 minutes ago Up 42 minutes 3306/tcp, 33060/tcp mysql_wordpress
f0cd32e390ab 6f9a0e03d62a "/start.sh" 8 hours ago Up 8 hours 0.0.0.0:32780->80/tcp, :::32780->80/tcp, 0.0.0.0:32781->443/tcp, :::32781->443/tcp unruffled_poincare
[root@localhost ~]# docker exec -it 3ea2e9862b9a /bin/bash
[root@3ea2e9862b9a /]# vi /usr/share/nginx/wordpress/wp-config.php
#将页面提示的配置代码全部粘贴并复制到该文件里然后按ctrl + p +q 后台运行该容即可。



相关文章:
Dockerfile制作部署wordpress-6.6
目录 一. 环境准备 二. 准备对应的配置文件 三. 编写Dockerfile 四. 构建镜像 五. 配置MySQL 六. 安装wordpress 七. 扩展 一. 环境准备 localhost192.168.226.25 rocky_linux9.4 Docker version 27.0.3 关闭防火墙和selinux,进行时间同步。 安装docker…...
项目的纪要
ai客服项目中发现的问题: 可以在控制台看到我们存储的cookie: 可以看到是这样的, 但是我们通过getCookie方法专门获取这个字段, 然后在控制台打印后 const userName getCookie(SA_USER_NICK_NAME); console.log(userName, userName); 输出结果是: 然后我们尝试通过de…...
ubuntu 更新源
前言 实现一键替换在线源 一键更新源 ubuntu 全球镜像站以下支持现有ubuntu 20,22,24 echo "Delete the default source" rm -rf /etc/apt/sources.listecho "Build a new source" cat <<EOF>>/etc/apt/sources.li…...
XGBoost、RF随机森林算法MATLAB实现
% 加载并预处理训练数据 opts1 = detectImportOptions(附件一AE.xlsx, PreserveVariableNames, true); train_data = readtable(附件一AE.xlsx, opts1); train_data.Time = datetime(train_data.time, InputFormat, yyyy-MM-dd HH:mm:ss); % 特征提取和标签准备 windowSize…...
WPF 解决: DataGrid 已定义列,但是还是会显示模型的所有属性的问题
AutoGenerateColumns 属性 AutoGenerateColumns:这个属性决定 DataGrid 是否根据数据源中的属性自动生成列。如果设置为 true,DataGrid 会根据数据源中的属性自动生成列。如果设置为 false,则 DataGrid 不会自动生成列,开发者需要…...
【ai】Easy-RAG : ImportError: cannot import name ‘BaseModel‘ from ‘pydantic‘
[Bug]: cannot import name ‘RootModel’ from ‘pydantic’ #1237 版本不匹配导致 ImportError: cannot import name ‘BaseModel’ from ‘pydantic’ /home/zhangbin/miniconda3/envs/Easy-RAG/bin/python /home/zhangbin/proj/06_rag/02_Easy-RAG/webui.py /home/zhangbi…...
WebKit简介
WebKit是一个开源的浏览器引擎,最初由苹果公司开发,用于Safari浏览器。它是基于KDE项目的KHTML引擎进行开发,并在改进和扩展中形成了WebKit引擎。 WebKit的工作流程可以分为以下几个步骤: 1.解析HTML:当浏览器加载一个…...
笔记 | Python环境下的GUI编程常用包
前言 Python的使用频率和范围越来越大,在一些开发工作中由于需要可视化的图形界面,常常需要进行图形用户界面(Graphic User Interface, GUI)开发。例如,目前最火热的大模型应用,常常是以一个网页界面进行操…...
mysql 数据库空间统计sql
mysql 数据库空间统计 文章目录 mysql 数据库空间统计说明一、数据库存储代码二、查询某个数据库的所有表的 代码总结 说明 INFORMATION_SCHEMA Table Reference 表参考 information_schema是MySQL中的一个特殊数据库,它存储了关于所有其他数据库的元数据信息。…...
【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁
文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁(Mutex)8.2 条件变量(Condition Variable)8.3 信号量(Semaph…...
stm32入门-----TIM定时器(PWM输出比较——下)
目录 前言 一、硬件元器件介绍 1.舵机 2.直流电机驱动 二、C语言编程步骤 1.开启时钟 2.配置输出的GPIO口 3.配置时基单元 4.初始化输出比较通道 5.开启定时器 三、实践项目 1.PWM驱动LED呼吸灯 2.PWM驱动舵机 3.PWM驱动直流电机 前言 本期我们就开始去进行TIM定时…...
css实现线条中间高亮,左右两边模糊(linear-gradient的运用)
效果: <div class"line"></div> .line {height: 1px;background: linear-gradient(90deg, rgba(255, 255, 255, 0) 0%, #a9c2ff 50%, rgba(255, 255, 255, 0) 100%);border-radius: 4px 4px 4px 4px; } CSS实现边框底部渐变色的方法:(最简单…...
【数据结构】建堆算法复杂度分析及TOP-K问题
【数据结构】建堆算法复杂度分析及TOP-K问题 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…...
Thinkphp5实现前后端通过接口通讯基本操作方法
在ThinkPHP5框架中,实现前后端通过接口通讯是一个常见的需求,尤其是在开发RESTful API时。下面是一个基本的步骤指南,用于设置ThinkPHP5来创建API接口,并使前端能够通过HTTP请求与后端进行通讯。 1. 创建API模块 首先࿰…...
Go 语言任务编排 WaitGroup
WaitGroup 是常用的 Go 同步原语之一,用来做任务编排。它要解决的就是并发-等待的问题: 现在有一个 goroutine A 在检查点 ( checkpoint ) 等待一组 goroutine 全部完成它们的任务,如果这些 goroutine 还没全部完成任务,那么 goroutine A 就会被阻塞在检查点,直到所有的 …...
星环科技推出知识库产品 AI PC时代数据交互方式变革
随着企业业务的快速发展,数据量呈爆炸式增长,有效的知识管理成为企业面临的重要问题。企业遇到的普遍问题是大量的结构化、半结构化数据存储在不同的系统中,需要用多种计算机语言进行检索。而大模型彻底改变了人们和数据的交互方式࿰…...
10道JVM经典面试题
1、 JVM中,new出来的对象是在哪个区? 2、 说说类加载有哪些步骤? 3、 JMM是什么? 4、 说说JVM内存结构? 5、 MinorGC和FullGC有什么区别? 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出?…...
Redisson常用的数据结构及应用场景
Redisson 提供了一系列高级数据结构,这些数据结构封装了 Redis 的原生数据类型,提供了 Java API 的便利性和分布式特性。以下是 Redisson 中一些常用的数据结构,场景还在不断完善中: RBucket:这是一个简单的键值对存储…...
【实现100个unity特效之8】使用ShaderGraph实现2d贴图中指定部分局部发光效果
最终效果 寒冰法师 火焰法师 文章目录 最终效果寒冰法师火焰法师 素材一、功能分析实现方法基本思路Unity的Bloom后处理为什么关键部位白色?最终结果 二、 新建URP项目三、合并图片四、使用PS制作黑白图片方法一 手动涂鸦方法二 魔棒工具1. 拖入图片进PS࿰…...
Ubuntu 24.04 LTS Noble安装Docker Desktop简单教程
Docker 为用户提供了在 Ubuntu Linux 上快速创建虚拟容器的能力。但是,那些不想使用命令行管理容器的人可以在 Ubuntu 24.04 LTS 上安装 Docker Desktop GUI,本教程将提供用于设置 Docker 图形用户界面的命令…… Docker Desktop 是一个易于使用的集成容…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
C++.OpenGL (20/64)混合(Blending)
混合(Blending) 透明效果核心原理 #mermaid-svg-SWG0UzVfJms7Sm3e {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-icon{fill:#552222;}#mermaid-svg-SWG0UzVfJms7Sm3e .error-text{fill…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
