go-admin 構建arm鏡像

目錄

1、 go-admin Dockerfile

2、docker build go-admin

3、settings.yml

4、go-admin-ui Dockerfile

5、docker build go-admin-ui

6、go-admin.yaml

7、go-admin-ui.yaml 


1、 go-admin Dockerfile

# 構建階段:使用 Go 1.24 版本(支持遠程調試)
FROM golang:1.24-alpine AS builder

# 配置環境變量(ENV 內部不允許插入注釋行,注釋需放在 ENV 外部)
# 啟用調試符號(保留調試信息):CGO_CFLAGS="-g -O0"、GOFLAGS="-gcflags=all=-N -l"
ENV GOPROXY=https://goproxy.cn/,direct \
    GO111MODULE=on \
    CGO_ENABLED=1 \
    GOOS=linux \
    GOARCH=arm64 \
    CGO_CFLAGS="-g -O0" \
    GOFLAGS="-gcflags=all=-N -l"

# 安裝編譯工具和調試依賴
RUN apk add --no-cache git make gcc g++ musl-dev

# 克隆代碼并編譯(保留調試符號)
RUN git clone https://github.com/go-admin-team/go-admin.git /app && \
    cd /app && \
    go mod tidy && \
    go build -gcflags="all=-N -l" -o go-admin

# 運行階段:使用輕量 Alpine 鏡像
FROM alpine:latest

# 配置時區
ENV TZ=Asia/Shanghai

# 安裝運行依賴和調試工具
RUN apk add --no-cache ca-certificates tzdata libc6-compat && \
    apk add --no-cache --repository=http://dl-cdn.alpinelinux.org/alpine/edge/community delve

# 創建日志目錄和配置目錄
RUN mkdir -p /app/config /app/temp/logs && \
    chmod -R 777 /app/temp/logs

# 復制編譯產物和配置文件
COPY --from=builder /app/go-admin /app/
COPY --from=builder /app/config/settings.yml /app/config/settings.yml
COPY settings.yml /app/config/settings.yml

# 暴露應用端口和調試端口
EXPOSE 8000
EXPOSE 2345

# 工作目錄
WORKDIR /app

# 啟動命令(遠程調試)
CMD ["/bin/sh", "-c", "dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./go-admin -- server -c config/settings.yml -a true"]

或者

# 構建階段:使用 Go 1.24 版本
FROM golang:1.24-alpine AS builder

# 配置環境變量
ENV GOPROXY=https://goproxy.cn/,direct \
    GO111MODULE=on \
    CGO_ENABLED=1 \
    GOOS=linux \
    GOARCH=arm64 \
    CGO_CFLAGS="-g -O0" \
    GOFLAGS="-gcflags=all=-N"

# 安裝編譯工具和依賴
RUN apk add --no-cache git make gcc g++ musl-dev unzip

# 創建應用目錄
RUN mkdir -p /app /tmp/build

# 復制本地文件(優先使用本地zip包)
COPY go-admin.zip* /tmp/build/
COPY settings.yml* /tmp/build/

# 處理源碼:優先使用本地zip,否則從git拉取
RUN if [ -f "/tmp/build/go-admin.zip" ]; then \
        unzip /tmp/build/go-admin.zip -d /app && \
        # 處理壓縮包內可能的目錄結構差異
        if [ -d "/app/go-admin" ] || [ -d "/app/go-admin-master" ]; then \
            SRC_DIR="/app/go-admin" && \
            if [ -d "/app/go-admin-master" ]; then SRC_DIR="/app/go-admin-master"; fi && \
            find $SRC_DIR -maxdepth 1 -exec mv {} /app \; && \
            rm -rf $SRC_DIR; \
        fi; \
    else \
        git clone https://github.com/go-admin-team/go-admin.git /app; \
    fi && \
    cd /app && \
    go mod tidy && \
    go build -gcflags="all=-N" -o go-admin

# 運行階段:使用輕量Alpine鏡像
FROM alpine:latest

# 配置環境變量
ENV TZ=Asia/Shanghai \
    APP_PORT=8000 \
    LOG_PATH=/app/temp/logs \
    # 新增調試開關(true=啟用dlv調試,false=正常啟動)
    ENABLE_DEBUG=false

# 安裝運行依賴
RUN apk add --no-cache ca-certificates tzdata libc6-compat gcompat &

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

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

相關文章

深入淺出:C++ STL簡介與學習指南

目錄 前言 STL的版本演變 STL六大組件 STL的重要性 如何學習STL STL的缺陷 總結 前言 什么是STL? STL(Standard Template Library,標準模板庫)是C標準庫的核心組成部分,它不僅是一個可復用的組件庫,更是一…

Mysql事務原理

臟讀(Dirty Read) 某個事務已更新一份數據,另一個事務在此時讀取了同一份數據,由于某些原因,前一個進行了RollBack,則后一個事務所讀取的數據就會是不正確的。 不可重復讀(Non-repeatable read) 在一個事務的兩次查詢之中數據不一…

小紅書筆記詳情API指南

一、引言小紅書作為中國領先的社交電商平臺,擁有超過4.8億用戶(2025年Q2數據),其開放平臺已成為品牌營銷與數據挖掘的重要渠道?1。通過筆記詳情API獲取數據,可以幫助商家、品牌方和數據分析人員了解用戶反饋、市場趨勢和消費需求?。這些數據…

VS+Qt中使用QCustomPlot繪制曲線標簽(附源碼)

在qt中我們常常會使用數據來繪制曲線,常用的的繪制方法用QCutomPlot、QChart和QPrinter。有時我們會根據需要在曲線進行二次繪制,包括對曲線打標簽,顯示某個點的值等功能。本文主要為大家介紹在QCustomPlot中使用QCPItemTracer和QCPItemText繪…

Spring Boot項目生產環境部署完整指南

在Spring Boot應用開發完成后,如何將其穩定、高效地部署到生產環境是每個開發者都需要掌握的關鍵技能。本文將詳細介紹Spring Boot項目的多種部署方案,從傳統部署到現代化容器部署,選擇最適合的部署策略。 1. 部署前的準備工作 1.1 項目打包優…

微信小程序中實現頁面跳轉的方法

微信小程序中頁面跳轉主要有兩種方式:聲明式導航(通過組件實現)和編程式導航(通過API實現)。兩種方式適用于不同場景,以下詳細說明。一、聲明式導航(navigator組件)通過小程序內置的…

從0開始學linux韋東山教程Linux驅動入門實驗班(7)

本人從0開始學習linux,使用的是韋東山的教程,在跟著課程學習的情況下的所遇到的問題的總結,理論雖枯燥但是是基礎。本人將前幾章的內容大致學完之后,考慮到后續驅動方面得更多的開始實操,后續的內容將以韋東山教程Linux驅動入門實…

國內AI IDE競逐:騰訊CodeBuddy、阿里通義靈碼、字節跳動TRAE、百度文心快碼

國內AI IDE競逐:騰訊CodeBuddy、阿里通義靈碼、字節跳動TRAE、百度文心快碼 隨著人工智能技術的不斷發展,各大科技公司紛紛推出自家的AI IDE,推動軟件開發進入全新的智能化時代。騰訊的 CodeBuddy IDE、阿里云的 通義靈碼 AI IDE、字節跳動的…

git rebase使用教程 以及和merge的區別

Merge和Rebase概念概述 rebase 和 merge 相似,但又不完全相同,本質上都是用來合并分支的命令,區別如下 merge合并分支會多出一條merge commit記錄,而rebase不會merge的提交樹是非線性的,會有分叉,而rebase的…

React中的合成事件解釋和理解

什么是合成事件(Synthetic event)?它和原生事件有什么區別?解題思路:解釋合成事件,然后對比原生事件,然后再說他的優勢1.一致性 在 react里面,這個合成事件是非常重要的,因為它就是為了解決瀏覽器之間與事…

【Python系列】使用 memory_profiler 診斷 Flask 應用內存問題

博客目錄一、內存分析的重要性二、memory_profiler 基礎使用安裝與基本配置理解分析報告三、在 Flask 應用中使用 memory_profiler裝飾視圖函數使用 mprof 進行長期監控四、高級內存分析技巧精確測量代碼塊內存定期內存采樣結合 objgraph 分析對象引用五、常見內存問題及解決方…

vue3【組件封裝】超級表單 S-form.vue

最終效果 代碼實現 components/SUI/S-form.vue <script lang"ts" setup> import type { FormInstance } from "element-plus";// 使用索引簽名定義對象類型 type GenericObject {[key: string]: any; };const props defineProps<{Model?: Gen…

Android Studio Memory Monitor內存分析核心指標詳解

Depth、Native Size、Shallow Size、Retained Size 解析 一、指標定義與對比指標定義計算邏輯重要性Shallow Size對象自身實例占用的內存基本類型字段大小 引用指針 內存對齊對象的基礎內存成本Retained Size回收該對象可釋放的總內存量&#xff08;含所有依賴對象&#xff0…

vue中使用wavesurfer.js繪制波形圖和頻譜圖(支持.pcm)

新的實現方式&#xff1a;vue使用Canvas繪制頻譜圖 安裝wavesurfer.js npm install wavesurfer.js第一版&#xff1a; 組件特點&#xff1a; 一次性加載好所有的數據&#xff1b; <template><div class"audio-visualizer-container"><div class&…

go mod教程、go module

什么是go mod go mod 是go語言的包管理工具&#xff0c;類似java 的maven&#xff0c;go mod的出現可以告別goPath&#xff0c;使用go module來管理項目&#xff0c;有了go mod賬號就不需要非得把項目放到gopath/src目錄下了&#xff0c;你可以在磁盤的任何位置新建一個項目 go…

150-SWT-MCNN-BiGRU-Attention分類預測模型等!

150-SWT-MCNN-BiGRU-Attention分類預測模型!基于多尺度卷積神經網絡(MCNN)雙向長短期記憶網絡(BiGRU)注意力機制(Attention)的分類預測模型&#xff0c;matlab代碼&#xff0c;直接運行使用&#xff01;1、模型介紹&#xff1a;針對傳統方法在噪聲環境下診斷精度低的問題&#…

MySQL數據一致性與主從延遲深度解析:從內核機制到生產實踐

在高并發分布式系統中&#xff0c;數據一致性與復制延遲如同硬幣的兩面。本文深入剖析MySQL持久化機制與主從同步原理&#xff0c;并提供可落地的調優方案。一、數據持久化核心機制&#xff1a;雙日志協同 1. Redo Log&#xff1a;崩潰恢復的生命線刷新策略&#xff08;innodb_…

【I】題目解析

目錄 單選題 多選題 判斷題 單選題 1.reg[7:0]A; A2hFF;則A&#xff08;&#xff09; A.8b11111110 B.8b03 C.8b00000011 D.8b11111111 C 2hFF實際上等效于2位二進制2b11&#xff0c;賦值給8位寄存器A之后&#xff0c;低位賦值&#xff0c;高位補0 A8b00000011 AMD FPG…

《Foundation 面板:設計、功能與最佳實踐解析》

《Foundation 面板:設計、功能與最佳實踐解析》 引言 在當今數字化時代,用戶界面(UI)設計的重要性不言而喻。其中,Foundation 面板作為一種流行的前端框架,因其靈活性和高效性而被眾多開發者所青睞。本文將深入解析 Foundation 面板的設計理念、功能特點以及最佳實踐,…

React服務端渲染 Next 使用詳解

1. Next.js 概述 Next.js 是一個基于 React 的開源框架&#xff0c;專注于服務器端渲染&#xff08;SSR&#xff09;和靜態站點生成&#xff08;SSG&#xff09;&#xff0c;提供開箱即用的 SSR 功能&#xff0c;簡化 React 應用的開發與部署。 2. Next.js 的核心特性 SSR 支…