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

Dockerfile制作部署wordpress-6.6

目录

一. 环境准备

二. 准备对应的配置文件

三. 编写Dockerfile

四. 构建镜像

五. 配置MySQL 

六. 安装wordpress 

七. 扩展


一. 环境准备

localhost192.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 简体中文icon-default.png?t=N7T8https://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&#xff0c;22&#xff0c;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&#xff1a;这个属性决定 DataGrid 是否根据数据源中的属性自动生成列。如果设置为 true&#xff0c;DataGrid 会根据数据源中的属性自动生成列。如果设置为 false&#xff0c;则 DataGrid 不会自动生成列&#xff0c;开发者需要…...

【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是一个开源的浏览器引擎&#xff0c;最初由苹果公司开发&#xff0c;用于Safari浏览器。它是基于KDE项目的KHTML引擎进行开发&#xff0c;并在改进和扩展中形成了WebKit引擎。 WebKit的工作流程可以分为以下几个步骤&#xff1a; 1.解析HTML&#xff1a;当浏览器加载一个…...

笔记 | Python环境下的GUI编程常用包

前言 Python的使用频率和范围越来越大&#xff0c;在一些开发工作中由于需要可视化的图形界面&#xff0c;常常需要进行图形用户界面&#xff08;Graphic User Interface, GUI&#xff09;开发。例如&#xff0c;目前最火热的大模型应用&#xff0c;常常是以一个网页界面进行操…...

mysql 数据库空间统计sql

mysql 数据库空间统计 文章目录 mysql 数据库空间统计说明一、数据库存储代码二、查询某个数据库的所有表的 代码总结 说明 INFORMATION_SCHEMA Table Reference 表参考 information_schema是‌MySQL中的一个特殊数据库&#xff0c;它存储了关于所有其他数据库的元数据信息。…...

【Linux】线程——线程池、线程池的实现、线程安全的线程池、单例模式的概念、饿汉和懒汉模式、互斥锁、条件变量、信号量、自旋锁、读写锁

文章目录 Linux线程7. 线程池7.1 线程池介绍7.2 线程池的实现7.3 线程安全的线程池7.3.1 单例模式的概念7.3.2 饿汉和懒汉模式 8. 常见锁使用汇总8.1 互斥锁&#xff08;Mutex&#xff09;8.2 条件变量&#xff08;Condition Variable&#xff09;8.3 信号量&#xff08;Semaph…...

stm32入门-----TIM定时器(PWM输出比较——下)

目录 前言 一、硬件元器件介绍 1.舵机 2.直流电机驱动 二、C语言编程步骤 1.开启时钟 2.配置输出的GPIO口 3.配置时基单元 4.初始化输出比较通道 5.开启定时器 三、实践项目 1.PWM驱动LED呼吸灯 2.PWM驱动舵机 3.PWM驱动直流电机 前言 本期我们就开始去进行TIM定时…...

css实现线条中间高亮,左右两边模糊(linear-gradient的运用)

效果&#xff1a; <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问题 &#x1f525;个人主页&#xff1a;大白的编程日记 &#x1f525;专栏&#xff1a;数据结构 文章目录 【数据结构】建堆算法复杂度分析及TOP-K问题前言一.复杂度分析1.1向下建堆复杂度1.2向上建堆复杂度1.3堆排序复杂度 二.TOP-K问…...

Thinkphp5实现前后端通过接口通讯基本操作方法

在ThinkPHP5框架中&#xff0c;实现前后端通过接口通讯是一个常见的需求&#xff0c;尤其是在开发RESTful API时。下面是一个基本的步骤指南&#xff0c;用于设置ThinkPHP5来创建API接口&#xff0c;并使前端能够通过HTTP请求与后端进行通讯。 1. 创建API模块 首先&#xff0…...

Go 语言任务编排 WaitGroup

WaitGroup 是常用的 Go 同步原语之一,用来做任务编排。它要解决的就是并发-等待的问题: 现在有一个 goroutine A 在检查点 ( checkpoint ) 等待一组 goroutine 全部完成它们的任务,如果这些 goroutine 还没全部完成任务,那么 goroutine A 就会被阻塞在检查点,直到所有的 …...

星环科技推出知识库产品 AI PC时代数据交互方式变革

随着企业业务的快速发展&#xff0c;数据量呈爆炸式增长&#xff0c;有效的知识管理成为企业面临的重要问题。企业遇到的普遍问题是大量的结构化、半结构化数据存储在不同的系统中&#xff0c;需要用多种计算机语言进行检索。而大模型彻底改变了人们和数据的交互方式&#xff0…...

10道JVM经典面试题

1、 JVM中&#xff0c;new出来的对象是在哪个区&#xff1f; 2、 说说类加载有哪些步骤&#xff1f; 3、 JMM是什么&#xff1f; 4、 说说JVM内存结构&#xff1f; 5、 MinorGC和FullGC有什么区别&#xff1f; 6、 什么是STW? 7、 什么情况下会发生堆/栈溢出&#xff1f…...

Redisson常用的数据结构及应用场景

Redisson 提供了一系列高级数据结构&#xff0c;这些数据结构封装了 Redis 的原生数据类型&#xff0c;提供了 Java API 的便利性和分布式特性。以下是 Redisson 中一些常用的数据结构&#xff0c;场景还在不断完善中&#xff1a; RBucket&#xff1a;这是一个简单的键值对存储…...

【实现100个unity特效之8】使用ShaderGraph实现2d贴图中指定部分局部发光效果

最终效果 寒冰法师 火焰法师 文章目录 最终效果寒冰法师火焰法师 素材一、功能分析实现方法基本思路Unity的Bloom后处理为什么关键部位白色&#xff1f;最终结果 二、 新建URP项目三、合并图片四、使用PS制作黑白图片方法一 手动涂鸦方法二 魔棒工具1. 拖入图片进PS&#xff0…...

Ubuntu 24.04 LTS Noble安装Docker Desktop简单教程

Docker 为用户提供了在 Ubuntu Linux 上快速创建虚拟容器的能力。但是&#xff0c;那些不想使用命令行管理容器的人可以在 Ubuntu 24.04 LTS 上安装 Docker Desktop GUI&#xff0c;本教程将提供用于设置 Docker 图形用户界面的命令…… Docker Desktop 是一个易于使用的集成容…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明&#xff1a; 想象一下&#xff0c;你正在用eNSP搭建一个虚拟的网络世界&#xff0c;里面有虚拟的路由器、交换机、电脑&#xff08;PC&#xff09;等等。这些设备都在你的电脑里面“运行”&#xff0c;它们之间可以互相通信&#xff0c;就像一个封闭的小王国。 但是&#…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...