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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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 支…