編譯docker版openresty

使用alpine為基礎鏡像

# 使用Alpine作為基礎鏡像
FROM alpine:3.18# 替換為阿里云鏡像源,并安裝必要的依賴
RUN sed -i 's|https://dl-cdn.alpinelinux.org/alpine|https://mirrors.aliyun.com/alpine|g' /etc/apk/repositories && \apk add --no-cache \build-base \pcre-dev \openssl-dev \zlib-dev \perl \linux-headers \&& mkdir -p /usr/local/openresty# 下載OpenResty源碼包
WORKDIR /tmp
RUN wget https://openresty.org/download/openresty-1.21.4.1.tar.gz && \tar zxpf openresty-1.21.4.1.tar.gz# 編譯并安裝OpenResty
WORKDIR /tmp/openresty-1.21.4.1
RUN ./configure --prefix=/usr/local/openresty \--with-pcre-jit \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \-j2 && \make && \make install# 清理無用文件
RUN rm -rf /tmp/openresty-1.21.4.1*# 設置工作目錄
WORKDIR /usr/local/openresty# 暴露端口
EXPOSE 80# 啟動命令
CMD ["/usr/local/openresty/nginx/sbin/nginx", "-g", "daemon off;"]

上面編譯完457M,多階段構建可以縮減至25.7M

# stage 1: 構建階段
FROM alpine:3.18 AS builderARG OPENRESTY_VERSION=1.27.1.2# 替換為阿里云源并安裝構建依賴
RUN sed -i 's|https://dl-cdn.alpinelinux.org/alpine|https://mirrors.aliyun.com/alpine|g' /etc/apk/repositories && \apk add --no-cache \build-base \pcre-dev \openssl-dev \zlib-dev \perl \linux-headers# 下載并解壓 OpenResty 源碼
WORKDIR /tmp
RUN wget https://openresty.org/download/openresty-${OPENRESTY_VERSION}.tar.gz && \tar zxpf openresty-${OPENRESTY_VERSION}.tar.gz# 編譯安裝 OpenResty
WORKDIR /tmp/openresty-${OPENRESTY_VERSION}
RUN ./configure --prefix=/usr/local/openresty \--with-pcre-jit \--with-http_ssl_module \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module \-j2 && \make && \make install# 剝離可執行文件
RUN strip /usr/local/openresty/nginx/sbin/nginx# stage 2: 最終運行環境
FROM alpine:3.18# 安裝運行時依賴# 安裝運行時依賴與時區支持
RUN sed -i 's|https://dl-cdn.alpinelinux.org/alpine|https://mirrors.aliyun.com/alpine|g' /etc/apk/repositories && \apk add --no-cache \libgcc \pcre \openssl \zlib \tzdata && \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone# 復制編譯好的 OpenResty 文件
COPY --from=builder /usr/local/openresty /usr/local/openresty# 設置工作目錄
WORKDIR /usr/local/openresty# 暴露端口
EXPOSE 80# 啟動命令
CMD ["/usr/local/openresty/nginx/sbin/nginx", "-g", "daemon off;"]

編譯arm版docker(10代i74c4g編譯1小時)

需要安裝dockerbuildx

docker buildx create --use --name=mybuilder-cn --driver docker-container --driver-opt image=uhub.service.ucloud.cn/iatc/cn-buildkit:latest
docker buildx use mybuilder-cn
docker buildx build --platform linux/arm/v7 -t openresty-arm:latest . --load
docker buildx rm mybuilder-cn

在x86機器上運行armv7版

docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
docker run -it --platform=linux/arm/v7 openresty-arm:latest

docker版的helloworld

docker exec -it openresty sh
cd /usr/local/openresty/nginx/conf
#編輯nginx.conf 將location/內容替換為location / {default_type text/plain;content_by_lua_block {ngx.say("Hello World")}}
#然后保存
#最后重載配置
/usr/local/openresty/nginx/sbin/nginx -s reload

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/905388.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/905388.shtml
英文地址,請注明出處:http://en.pswp.cn/news/905388.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

conda 輸出指定python環境的庫 輸出為 yaml文件

conda 輸出指定python環境的庫 輸出為 yaml文件。 有時為了項目部署,需要匹配之前的python環境,需要輸出對應的python依賴庫。 假設你的目標環境名為 myenv,運行以下命令: conda env export -n myenv > myenv_environment.ym…

[Java][Leetcode middle] 121. 買賣股票的最佳時機

暴力循環 總是以最低的價格買入,以最高的價格賣出: 例如第一天買入,去找剩下n-1天的最高價格,計算利潤 依次計算到n-1天買入; 比較上述利潤 // 運行時間超時。 o(n^2)public int maxProfit1(int[] prices) {int profit 0;for (i…

克隆虛擬機組成集群

一、克隆虛擬機 1. 準備基礎虛擬機 確保基礎虛擬機已安裝好操作系統(如 Ubuntu)、Java 和 Hadoop。關閉防火墻并禁用 SELinux(如適用): bash sudo ufw disable # Ubuntu sudo systemctl disable firewalld # CentO…

記錄一次使用thinkphp使用PhpSpreadsheet擴展導出數據,解決身份證號碼等信息科學計數法問題處理

PhpSpreadsheet官網 PhpSpreadsheet安裝 composer require phpoffice/phpspreadsheet使用composer安裝時一定要下載php對應的版本&#xff0c;下載之前使用php -v檢查當前php版本 簡單使用 <?php require vendor/autoload.php;use PhpOffice\PhpSpreadsheet\Spreadshee…

前端工程化:從 Webpack 到 Vite

引言 前端工程化是現代Web開發不可或缺的一部分&#xff0c;它通過自動化流程和標準化實踐&#xff0c;提高了開發效率和代碼質量。在這個領域中&#xff0c;構建工具扮演著核心角色&#xff0c;而Webpack和Vite則是其中的兩位重要角色。本文將探討前端工程化的演進歷程&#…

Leetcode 3543. Maximum Weighted K-Edge Path

Leetcode 3543. Maximum Weighted K-Edge Path 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3543. Maximum Weighted K-Edge Path 1. 解題思路 這一題思路上就是一個遍歷的思路&#xff0c;我們只需要考察每一個節點作為起點時&#xff0c;所有長為 k k k的線段的長度&…

香橙派zero3 安卓TV12,更換桌面launcher,開機自啟動kodi

打開開發者模式&#xff0c;連擊版本號&#xff0c;基本上都是這樣。 adb連接 查找桌面包名 adb shell dumpsys activity activities | findstr mResumedActivity 禁用原桌面com.android.tv.launcher&#xff0c;已經安裝了projectivylauncher434.apk桌面。 adb shell pm …

半小時快速入門Spring AI:使用騰訊云編程助手CodeBuddy 開發簡易聊天程序

引言 隨著人工智能&#xff08;AI&#xff09;技術的飛速發展&#xff0c;越來越多的開發者開始探索如何將AI集成到自己的應用中。人工智能正在迅速改變各行各業的工作方式&#xff0c;從自動化客服到智能推薦系統&#xff0c;AI的應用幾乎無處不在。Spring AI作為一種開源框架…

【unity游戲開發——編輯器擴展】使用MenuItem自定義菜單欄拓展

免職聲明&#xff1a; 1、目前本博客分享的大部分知識產出方式是&#xff1a;學習別人知識自己實際做一遍自己的理解擴展內容自己整理、歸納、總結再分享。2、正如博客簡介所說&#xff1a;這里沒有教程&#xff0c;這里只做學習分享。所有的內容都是學習筆記&#xff0c;可以說…

數學復習筆記 7

前言 現在復習線代基礎&#xff0c;慢慢打基礎。。 轉置 方陣轉置之后行列式保持不變。我的筆記感覺主要不是整理知識點&#xff0c;主要是把我的一些理解記錄下來。這才是我自己的東西&#xff0c;那些需要記住的知識和內容記住就好了。記住轉置有四個性質&#xff0c;在講…

AIGC時代的內容安全:AI檢測技術如何應對新型風險挑戰?

在數字時代&#xff0c;互聯網內容以文本、圖像、音頻和視頻等形式呈現爆發式增長&#xff0c;深刻塑造了信息傳播的格局。然而&#xff0c;內容的快速傳播也帶來了嚴峻挑戰&#xff1a;違法信息&#xff08;如涉黃、涉政&#xff09;、虛假廣告、網絡暴力等內容不僅威脅用戶體…

PyTorch中的nn.Embedding應用詳解

PyTorch 文章目錄 PyTorch前言一、nn.Embedding的基本原理二、nn.Embedding的實際應用簡單的例子自然語言處理任務 前言 在深度學習中&#xff0c;詞嵌入&#xff08;Word Embedding&#xff09;是一種常見的技術&#xff0c;用于將離散的詞匯或符號映射到連續的向量空間。這種…

AI 檢測原創論文:技術迷思與教育本質的悖論思考

當高校將 AI 寫作檢測工具作為學術誠信的 "電子判官"&#xff0c;一場由技術理性引發的教育異化正在悄然上演。GPT-4 檢測工具將人類創作的論文誤判為 AI 生成的概率高達 23%&#xff08;斯坦福大學 2024 年研究數據&#xff09;&#xff0c;這種 "以 AI 制 AI&…

langchain4j集成QWen、Redis聊天記憶持久化

langchain4j實現聊天記憶默認是基于進程內存的方式&#xff0c;InMemoryChatMemoryStore是具體的實現了&#xff0c;是將聊天記錄到一個map中&#xff0c;如果用戶大的話&#xff0c;會造成內存溢出以及數據安全問題。位了解決這個問題 langchain4提供了ChatMemoryStore接口&am…

Tomcat 日志體系深度解析:從訪問日志配置到錯誤日志分析的全鏈路指南

一、Tomcat 核心日志文件架構與核心功能 1. 三大基礎日志文件對比&#xff08;權威定義&#xff09; 日志文件數據來源核心功能典型場景catalina.out標準輸出 / 錯誤重定向包含 Tomcat 引擎日志與應用控制臺輸出&#xff08;System.out/System.err&#xff09;排查 Tomcat 啟…

萬物互聯時代:ONVIF協議如何重構安防監控系統架構

前言 一、ONVIF協議是什么 ONVIF&#xff08;Open Network Video Interface Forum&#xff0c;開放式網絡視頻接口論壇&#xff09;是一種全球性的開放行業標準&#xff0c;由安訊士&#xff08;AXIS&#xff09;、博世&#xff08;BOSCH&#xff09;和索尼&#xff08;SONY&…

leetcode - 雙指針問題

文章目錄 前言 題1 移動零&#xff1a; 思路&#xff1a; 參考代碼&#xff1a; 題2 復寫零&#xff1a; 思考&#xff1a; 參考代碼&#xff1a; 題3 快樂數&#xff1a; 思考&#xff1a; 參考代碼&#xff1a; 題4 盛最多水的容器&#xff1a; 思考&#xff1a;…

從概念表達到安全驗證:智能駕駛功能迎來系統性規范

隨著輔助駕駛事故頻發&#xff0c;監管機制正在迅速補位。面對能力表達、使用責任、功能部署等方面的新要求&#xff0c;行業開始重估技術邊界與驗證能力&#xff0c;數字樣機正成為企業合規落地的重要抓手。 2025年以來&#xff0c;圍繞智能駕駛功能的爭議不斷升級。多起因輔…

java數組題(5)

&#xff08;1&#xff09;&#xff1a; 思路&#xff1a; 1.首先要對數組nums排序&#xff0c;這樣兩數之間的差距最小。 2.題目要求我們通過最多 k 次遞增操作&#xff0c;使數組中某個元素的頻數&#xff08;出現次數&#xff09;最大化。經過上面的排序&#xff0c;最大數…

Python(1) 做一個隨機數的游戲

有關變量的&#xff0c;其實就是 可以直接打印對應變量。 并且最后倒數第二行就是可以讓兩個數進行交換。 Py快捷鍵“ALTP 就是顯示上一句的代碼。 —————————————————————————————— 字符串 用 雙引號或者單引號 。 然后 保證成雙出現即可 要是…