80 lines
2.3 KiB
Docker
80 lines
2.3 KiB
Docker
## 第一阶段 ====> Nodejs打包编译输出前端资源
|
|
FROM node:20-alpine AS build-node
|
|
|
|
# 系统文件
|
|
COPY ./linux /linux
|
|
# 后端程序
|
|
COPY ./omc_api /api
|
|
# 前端程序
|
|
COPY ./omc_web /web
|
|
RUN npm config set registry https://registry.npmmirror.com
|
|
RUN cd /web && npm install && npm run build
|
|
|
|
|
|
## 第二阶段 ====> Go打包编译输出后端程序
|
|
FROM golang:1.24-alpine AS build-golang
|
|
ARG TARGETARCH
|
|
ARG VERSION
|
|
|
|
# 从上个阶段复制文件
|
|
COPY --from=build-node /web/dist /web
|
|
COPY --from=build-node /api /api
|
|
COPY --from=build-node /linux /linux
|
|
|
|
# 设置变量
|
|
ARG VERSION
|
|
ENV CGO_ENABLED 1
|
|
ENV GOOS linux
|
|
ENV GOPROXY https://goproxy.cn,direct
|
|
|
|
# 更新apt并安装必要工具
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
RUN apk add gcc musl-dev libpcap-dev && rm -rf /var/cache/apk/*
|
|
|
|
RUN cd /api && go mod download
|
|
RUN cd /api && go build -o omc -v -ldflags "-s -w \
|
|
-X 'be.ems/src/framework/config.Version=$VERSION' \
|
|
-X 'be.ems/src/framework/config.BuildTime=$(date)' \
|
|
-X 'be.ems/src/framework/config.GoVer=$(go version)'"
|
|
|
|
|
|
## 第三阶段 ====> 构建前后端融合镜像
|
|
FROM alpine:3.20
|
|
|
|
# 从上个阶段复制文件
|
|
COPY --from=build-golang /linux/usr/local/etc/omc /usr/local/etc/omc
|
|
COPY --from=build-golang /linux/usr/local/omc /usr/local/omc
|
|
COPY --from=build-golang /api/omc /usr/local/bin/omc
|
|
COPY --from=build-golang /web /usr/local/etc/omc/web
|
|
|
|
# 更新apt并安装必要工具
|
|
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
|
|
RUN apk add musl-dev libpcap-dev bash nginx tzdata && rm -rf /var/cache/apk/*
|
|
|
|
# 设置时区和语言环境
|
|
ENV LANG="en_US.UTF-8"
|
|
ENV TZ="Asia/Shanghai"
|
|
WORKDIR /usr/local/etc/omc
|
|
|
|
RUN chmod +x /usr/local/etc/omc/script/*.sh
|
|
RUN /usr/local/etc/omc/script/postunpack.sh
|
|
|
|
EXPOSE 80 443 33030 33443 33033 33034 33060
|
|
|
|
CMD [ "/usr/local/etc/omc/script/entrypoint.sh" ]
|
|
|
|
# build 448MB
|
|
# docker docker build --platform linux/amd64 --build-arg TARGETARCH=amd64 --build-arg VERSION=2.2505.2 -t omc:2.2505.2-alpine3.20-amd64 .
|
|
|
|
# docker run --network omcnet -it omc:2.2505.2-alpine3.20-amd64 /bin/bash
|
|
|
|
# docker run --privileged=true --restart=always -m 512M \
|
|
# -e TZ=Asia/Shanghai \
|
|
# -e M_PARAM=lite \
|
|
# -p 80:80 \
|
|
# -p 443:443 \
|
|
# --network omcnet \
|
|
# --name omc \
|
|
# -d omc:2.2505.2-alpine3.20-amd64
|
|
|