Dockerfile制作部署wordpress-6.6

news2024/9/23 11:23:38

目录

一. 环境准备

二. 准备对应的配置文件

三. 编写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.3

LABEL \
  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 - GPL

Copyright (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 后台运行该容即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938364.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配置RIPv2的认证

目录 一、配置IP地址、默认网关、启用端口 1. 路由器R1 2. 路由器R2 3. 路由器R3 4. Server1 5. Server2 二、搭建RIPv2网络 1. R1配置RIPv2 2. R2配置RIPv2 3. Server1 ping Server2 4. Server2 ping Server1 三、模拟网络攻击,为R3配置RIPv2 四、在R…

微软史诗级的蓝屏

本周经历了微软的蓝屏,一直到周末还在加班处理公司的问题。 个人终端受到的影响较大,服务器上也受到了影响。因为蓝屏的事情导致不少麻烦,据同事说因为蓝屏的问题,MGH 的手术安排也受到了影响。 目前我们也在着手处理有部署 Wind…

《书生大模型实战营第3期》入门岛 学习笔记与作业:Git 基础知识

文章大纲 Git 是什么?-- 分布式版本控制系统版本控制系统简介Git 基本概念1. 安装 Git1.1 Windows 系统1.2 Linux 系统 2. Git 托管平台3. 常用 Git 操作4. tips4.1 全局设置 vs. 本地设置4.2 如何配置4.3 验证设置4.4 Git 四步曲 5. 常用插件6. 常规开发流程 作业其…

leetcode hot100 (面试复习用)

数组 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。 示例: 输入:nums [-2,1,-3,4,-1,2,1,-5,4]输出:6解释&#xff1…

《算法笔记》总结No.9——高效配招

一.打表 一种经典的空间换时间方式:即将所有可能用到的结果实现计算出来,这样后面用到的时候直接可以查表获得。具体来说有3种方式: 1.计算所有结果 这个是最常用到的用法,例如在一个需要查询大量Fibonacci数F(n)的问题中&#x…

分布式Apollo配置中心搭建实战

文章目录 环境要求第一步、软件下载第二步、创建数据库参考文档 最近新项目启动,采用Apollo作为分布式的配置中心,在本地搭建huanj 实现原理图如下所示。 环境要求 Java版本要求:JDK1.8 MySql版本要求:5.6.5 Apollo版本要求&…

kettle从入门到精通 第七十九课 ETL之kettle kettle读取数据库BLOB字段转换为文件

上一课我们讲解了如何将文件以二进制流的方式写入数据库,本节课我们一起学习下如何将二进制数据读取为文件。 1、将二进制流转换为文件这里主要用到了步骤【文本文件输出】。表输入步骤从表中读取blob字段,java代码定义二进制流转换为文件的全路径&#…

微星主板 B450M 设置 Legacy 启动模式

问题来源 我安装阵列卡需要Legacy启动模式 主板设置 微星主板BIOS不熟悉,找了好久。 在 BIOS -> Setting -> Advanced -> Windows OS Configuaration 中把 BIOS CSM/UEFI Mode 设置成 CSM 模式 在 Setting -> Boot 中把 Boot mode select 改成带 “L…

在 CI/CD Pipeline 中实施持续测试的最佳实践!

随着软件开发周期的不断加快,持续集成(CI)和持续交付/部署(CD)已经成为现代软件开发的重要组成部分。在这一过程中,持续测试的实施对于确保代码质量、提高发布效率至关重要。本文将详细介绍在CI/CD流水线中…

mac数据恢复软件哪个好用 macbook数据恢复专业软件下载 mac数据恢复概率大吗 苹果电脑数据恢复软件哪个好

作为办公的必需品,mac的普及率虽然比不上其他品牌的windows操作系统,但是使用人群也一致居高不下,因此,mac数据丢失的问题也时常发生。当数据丢失以后,如何找回数据成了一大难题。 一、Mac数据恢复概率大吗 一般情况下…

NSSCTF-Web题目25(RCE-构造变量)

目录 [CISCN 2019初赛]Love Math 1、题目 2、知识点 3、思路 [SWPUCTF 2023 秋季新生赛]If_else 1、题目 2、知识点 3、思路 [CISCN 2019初赛]Love Math 1、题目 2、知识点 构造变量,进制转换、函数利用 3、思路 打开题目,出现源码 代码的意思…

Xcode学习笔记

Xcode学习笔记 前言一、在Mac上安装Xcode并做点简单设置1.查看一下Xcode的版本 二、使用Xcode新建一个Playground三、swift基础-变量1.swift是什么2.变量是什么3.建立变量4.改变变量5.小帖士 四、swift基础-变量命名规范1.使用小驼峰命名法2.使用有意义且描述性的名称3.避免使用…

03 Maven基础 MyBatis

文章目录 Maven1、Maven简介2、Maven基本使用3、 IDEA使用Maven4 、依赖管理 MyBatis1、Mybatis概述2、Mybatis快速入门3、Mapper代理开发4、核心配置文件6、配置文件实现CRUD7、注解实现CRUD Maven 1、Maven简介 Maven是专门用于管理和构建Java项目的工具 (1&…

笔记:现代卷积神经网络之AlexNet

本文为李沐老师《动手学深度学习》笔记小结,用于个人复习并记录学习历程,适用于初学者 模型介绍 2012年,AlexNet横空出世。它首次证明了学习到的特征可以超越手工设计的特征。它一举打破了计算机视觉研究的现状。 AlexNet使用了8层卷积神经…

【C#】| 与 及其相关例子

按位或(|) 按位或运算符 | 对两个数的每一位进行比较,如果两个数中至少有一个为 1,则结果位为 1;否则,结果位为0。 1010 (10 in decimal) | 1100 (12 in decimal) ------1110 (14 in decimal) 力扣相关…

几种常用排序算法

1 基本概念 排序是处理数据的一种最常见的操作,所谓排序就是将数据按某字段规律排列,所谓的字段就是数据节点的其中一个属性。比如一个班级的学生,其字段就有学号、姓名、班级、分数等等,我们既可以针对学号排序,也可…

【开源库】libodb库编译及使用

前言 本文介绍windows平台下libodb库的编译及使用。 文末提供libodb-2.4.0编译好的msvc2019_64版本,可直接跳转自取 ODB库学习相关 【开源库学习】libodb库学习(一) 【开源库学习】libodb库学习(二) 【开源库学习】…

K8S 部署jaeger-operator,与其演示项目hotrod

最近在研究observabilty在K8S环境的onboard,查阅了一些资料,发现现在网上Prometheus/Metrics相关的资源,是比较全面的,而Trace相关的部分不是很全面,所以写下这篇博文,以做备忘和分享。 组件介绍 我这里选…

C++面试题之判断一个变量是不是指针

对于变量其实对应的就是内存,而内存并没有表明一定是什么数据类型,所以判断变量是否是一个指针其实是一个参数类型匹配问题,在C中支持函数的重载,那么不同的函数因为参数的不同从而匹配不同函数调用过程。 编译器在进行函数匹配调…

格密码基础

目录 写在前面 一. 格上基本向量 二. 封闭球内格点数 三. 半稳定格 四. Chernoff-Hoeffding 界 五. 格密码中常用的细节 六. 可证明安全的格基 6.1 引入问题 6.2 格基选取 6.3 流程性小结 写在前面 本文章主要介绍格密码中所使用的一些基本概念,其中包括…