【Docker】apache 容器化部署
Apache环境标准软件基于Bitnami apache 构建。当前版本为2.4.58
你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取
配置文件地址: https://gitee.com/qingplus/qingcloud-platform
QingHub部署
快速启动样例
在容器中/app路径默认为配置为 Apache DocumentRoot 目录。
docker run --name apache -v /path/to/app:/app bitnami/apache:latest
或使用 Docker Compose:
version: '2'services:apache:image: 'bitnami/apache:latest'ports:- '80:8080'- '443:8443'volumes:- /path/to/app:/app
注意:由于这是一个非根容器,因此挂载的文件和目录必须具有 UID 的适当权限1001。
从主机访问您的服务器
要从主机访问 Web 服务器,您可以要求 Docker 将主机上的随机端口映射到8080容器8443中公开的端口。
docker run --name apache -P bitnami/apache:latest
运行docker port以确定 Docker 分配的随机端口。
$ docker port apache
8443/tcp -> 0.0.0.0:32768
8080/tcp -> 0.0.0.0:32769
您还可以手动指定要从主机转发到容器的端口。
docker run -p 8080:8080 -p 8443:8443 bitnami/apache:latest
通过导航到http://localhost:8080/来访问您的浏览器中的 Web 服务器。
配置
环境变量
可定制的环境变量
| Name | Description | Default Value |
|---|---|---|
APACHE_SERVER_TOKENS | Apache ServerTokens 指令。 | Prod |
只读环境变量
| Name | Description | Value |
|---|---|---|
WEB_SERVER_TYPE | 网络服务器类型 | apache |
APACHE_BASE_DIR | Apache 安装目录。 | ${BITNAMI_ROOT_DIR}/apache |
APACHE_BIN_DIR | 二进制可执行文件的 Apache 目录。 | ${APACHE_BASE_DIR}/bin |
APACHE_CONF_DIR | Apache 配置目录。 | ${APACHE_BASE_DIR}/conf |
APACHE_DEFAULT_CONF_DIR | Apache 默认配置目录。 | ${APACHE_BASE_DIR}/conf.default |
APACHE_HTDOCS_DIR | 包含要通过 Apache 提供服务的 HTTP 文件的目录。 | ${APACHE_BASE_DIR}/htdocs |
APACHE_TMP_DIR | 运行时临时文件的 Apache 目录。 | ${APACHE_BASE_DIR}/var/run |
APACHE_LOGS_DIR | Apache 日志目录。 | ${APACHE_BASE_DIR}/logs |
APACHE_VHOSTS_DIR | 虚拟主机的 Apache 目录。 | ${APACHE_CONF_DIR}/vhosts |
APACHE_HTACCESS_DIR | htaccess 文件的 Apache 目录。 | ${APACHE_VHOSTS_DIR}/htaccess |
APACHE_CONF_FILE | Apache 配置的路径。 | ${APACHE_CONF_DIR}/httpd.conf |
APACHE_PID_FILE | Apache PID 文件的路径。 | ${APACHE_TMP_DIR}/httpd.pid |
APACHE_DAEMON_USER | Apache 系统用户。 | daemon |
APACHE_DAEMON_GROUP | Apache system group. | daemon |
APACHE_DEFAULT_HTTP_PORT_NUMBER | 在构建时启用的默认 Apache HTTP 端口号。 | 8080 |
APACHE_DEFAULT_HTTP_PORT_NUMBER | 在构建时启用的默认 Apache HTTP 端口号。 | 80 |
APACHE_DEFAULT_HTTPS_PORT_NUMBER | 在构建时启用的默认 Apache HTTPS 端口号。 | 8443 |
APACHE_DEFAULT_HTTPS_PORT_NUMBER | 在构建时启用的默认 Apache HTTPS 端口号。 | 443 |
当您启动 Apache image时,您可以通过在 docker-compose 文件或命令行上传递一个或多个环境变量来调整实例的配置docker run。如果要添加新的环境变量:
- 对于 docker-compose,在应用程序部分下添加变量名称和值:
version: '2'services:apache:image: 'bitnami/apache:latest'ports:- '80:8081'- '443:8443'environment:- APACHE_HTTP_PORT_NUMBER=8081
- 对于手动执行,-e为每个变量和值添加一个选项:
docker run -d --name apache -p 80:8081 -p 443:443 \--network apache-tier \--e APACHE_HTTP_PORT_NUMBER=8081 \bitnami/apache:latest
添加自定义虚拟主机
默认情况httpd.conf下包括放置在/opt/bitnami/apache/conf/vhosts/. 您可以挂载my_vhost.conf到虚拟主机的文件/vhosts。
例如,为了添加一个虚拟主机www.example.com:
Step 2:使用以下内容编写文件my_vhost.conf
<VirtualHost *:8080>ServerName www.example.comDocumentRoot "/app"<Directory "/app">Options Indexes FollowSymLinksAllowOverride AllRequire all granted</Directory>
</VirtualHost>
Step 2: 将配置挂载为卷
docker run --name apache \-v /path/to/my_vhost.conf:/vhosts/my_vhost.conf:ro \bitnami/apache:latest
或使用 Docker Compose:
version: '2'services:apache:image: 'bitnami/apache:latest'ports:- '80:8080'- '443:8443'volumes:- /path/to/my_vhost.conf:/vhosts/my_vhost.conf:ro
使用自定义 SSL 证书
*注意:*以下步骤假设您使用自定义域名,并且您已将自定义域名配置为指向您的服务器。
该容器附带了已预先配置的 SSL 支持,并配有虚拟证书(server.crt以及server.key中的文件/certs)。如果您想使用自己的证书 ( .crt) 和证书密钥 ( .key) 文件,请按照以下步骤操作:
Step 1: 准备您的证书文件
在您的本地计算机中,创建一个名为certs的文件夹并放置您的证书文件。确保将两个文件分别重命名为server.crt和server.key:
mkdir /path/to/apache-certs -p
cp /path/to/certfile.crt /path/to/apache-certs/server.crt
cp /path/to/keyfile.key /path/to/apache-certs/server.key
Step 2: 运行 Apache image
从主机安装证书目录运行 Apache image,
docker run --name apache \-v /path/to/apache-certs:/certs \bitnami/apache:latest
或使用 Docker Compose:
version: '2'services:apache:image: 'bitnami/apache:latest'ports:- '80:8080'- '443:8443'volumes:- /path/to/apache-certs:/certs
Full configuration
该image在/opt/bitnami/apache/conf中查找配置。您可以使用自己的自定义配置文件覆盖httpd.conf文件。
docker run --name apache \-v /path/to/httpd.conf:/opt/bitnami/apache/conf/httpd.conf \bitnami/apache:latest
或使用 Docker Compose:
version: '2'services:apache:image: 'bitnami/apache:latest'ports:- '80:8080'- '443:8443'volumes:- /path/to/httpd.conf:/opt/bitnami/apache/conf/httpd.conf
相关文章:
【Docker】apache 容器化部署
Apache环境标准软件基于Bitnami apache 构建。当前版本为2.4.58 你可以通过轻云UC部署工具直接安装部署,也可以手动按如下文档操作,该项目已经全面开源,可以从如下环境获取 配置文件地址: https://gitee.com/qingplus/qingcloud-platform Q…...
基于element-plus +腾讯云COS实现图片上传
① 首先基于element-plus里面的:http-request"upload"自定义封装事件写一个点击事件之后基于腾讯云的 登录 对象存储控制台 ,创建存储桶。获取存储桶名称和 地域名称登录 访问管理控制台 ,获取您的项目 SecretId 和 SecretKey。在项目中安装 …...
Kafka模拟器产生数据仿真-集成StructuredStreaming做到”毫秒“级实时响应StreamData落地到mysql
这是仿真过程某图: 仿真实战kafka kafka消费sink端和StructuredStreaming集成通信成功 , 数据接收全部接收 数据落地情况: 全部接收到并all存入mysql 下面就简单分享一下StructuredStreaming代码吧 import org.apache.spark.sql.function…...
IDEA如何删除git最新一次远程提交
IDEA如何删除git最新一次远程提交 选择应用 -> Git -> Show History 选择最新提交上一次提交 -> Reset Current Branch to Here… Reset 提示框选择 Hard push到远程分支 -> 选择Force Push 结果验证 (最新分支已被删除)...
什么是单向数据流
单向数据流是一种数据流动的模式,通常用于前端框架(如 React、Vue 等)中。在单向数据流中,数据只能从一个方向流向另一个方向,不会出现数据的双向流动。这种模式有助于简化数据的管理和状态的维护,提高代码…...
Qt 线程池 QThreadPool
一.Qt 线程池 QThreadPool介绍 Qt线程池是一种管理多个线程的并发编程模型,通过使用线程池可以提高性能、控制并发度、提供任务队列和简化线程管理。 在Qt中,线程池的使用主要涉及以下几个步骤: 创建任务类:需要定义一个任务类&am…...
【兔子机器人】实现从初始状态到站立
一、遥想星空up主的方法 由于我有卡位结构,无法做到劈腿,而且底盘也不一样,无法使用此方法 但是其代码思想是可以借鉴的。 参考视频: 【【开源啦!】无刷轮腿平衡机器人】 【精准空降到 01:16】 https://www.bilibili…...
ImportError: cannot import name ‘open_filename‘ from ‘pdfminer.utils‘已搞定
报错内容 ImportError: cannot import name ‘open_filename’ from ‘pdfminer.utils’ 第一步:pip uninstall pdfminer 解决办法 pip3 install pdfminer.six注意不要 pip install pdfminer.six是安装不了的...
一文解决Word中公式插入问题(全免费/latex公式输入/texsWord)
分文不花,搞定你的word公式输入/texsWord完全使用指南 背景 碎碎念:折折腾腾至少装了几个小时,遇到了若干大坑。遇到的问题网上都搜索不到答案!!!就让我来当指路的小火柴吧。 本篇适用于在word中输入la…...
C语言实战——扫雷游戏
目录 1. 扫雷游戏分析和设计2.扫雷游戏的代码实现 1. 扫雷游戏分析和设计 1.1扫雷游戏的功能说明 使用控制台实现经典的扫雷游戏游戏可以通过菜单实现继续玩或者退出游戏扫雷的棋盘是9*9的格子默认随机布置10个雷可以排查雷 如果位置不是雷,就显示周围有几个雷 如果…...
.Net使用ElasticSearch
文章目录 前言主体内容一.Kibana中ElasticSearch的基础操作1.GET(查询)1.POST(新增)1.PUT(修改)1.DELET(删除) 二.在.Net中,对ElasticSearch进行基础操作1.DotNet连接Ela…...
HTML5、CSS3面试题(二)
上一章:HTML5、CSS3面试题(一) 哪些是块级元素那些是行内元素,各有什么特点 ?(必会) 行内元素: a、span、b、img、strong、input、select、lable、em、button、textarea 、selecting 块级元素࿱…...
sqllab第十一关通关笔记
知识点: 发现登录框就可以尝试注入登录框一般都是字符型注入通过注入可以获取其他表的信息绕过手段 单引号闭合联合注入也可以进行错误注入 首先看界面是一个登录框;通过admin admin登录进去,发现页面会把用户名和密码的登录信息打印出来&am…...
机械女生,双非本985硕,目前学了C 基础知识,转嵌入式还是java更好?
作为单片机项目开发的卖课佬,个人建议,先转嵌入式单片机开发方向,哈哈。 java我也学过,还学过oracle、mysql数据库,只是当时没做笔记,找不好充分的装逼证据了。 从实习通过业余时间,学到快正式毕…...
Python之字符串操作大全(29种方法)
本章详细介绍了常用的29种字符串操作方法及代码示例。 1. 重复输出字符串 print(x * 20) 输出:xxxxxxxxxxxxxxxxxxxx 2. 通过索引获取字符串 print(hello world[2:5]) 输出:llo 3. in 判断字符是否在字符串内 print(e in hello world) 输出&…...
ArcGIS学习(十五)用地适宜性评价
ArcGIS学习(十五)用地适宜性评价 本任务给大家带来的内容是用地适宜性评价。 用地适宜性评价是大家在平时工作中最常接触到的分析场景之一。尤其是在国土空间规划的大背景下,用地适宜性评价变得越来越重要。 此外,我们之前的任务主要是使用矢量数据进行分析。本案例是主讲…...
【matlab】如何将.mat文件与.nii文件互转
【matlab】如何将.mat文件与.nii文件互转 .mat转为.nii文件 有时候代码需要读取的是.nii文件,但是如何现有的数据是.mat格式,需要将.mata转化为.nii文件 1、先加载.mat文件 % 加载.mat文件 load(your_mat_file.mat); % 请将your_mat_file.mat替换为实…...
Uni-app开发Canvas当子组件示例,点点绘制图形
前言 使用Uni-app 实现封装一个Canvas渲染的子组件,实现通过传入两点绘制一条完整的路程 具体逻辑看我发的后端和数据库设计 C# 根据两点名称,寻找两短路程的最优解,【有数据库设计,完整代码】 即使不了解具体逻辑,该…...
从金蝶云星空到钉钉通过接口配置打通数据
从金蝶云星空到钉钉通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面…...
Unreal发布Android在刘海屏手机上不能全屏显示问题
Unreal 4.27发布Android在刘海屏手机上不能全屏显示问题 Android设置全屏刘海屏全屏设置4.27设置刘海屏在部分手机不能显示问题 Android设置全屏 AndroidManifest.xml文件配置 ...<activity android:name"com.epicgames.ue4.GameActivity" android:label"st…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
