88 lines
2.7 KiB
Docker
88 lines
2.7 KiB
Docker
## 第一阶段 ====> Nodejs打包编译输出前端资源
|
|
FROM node:20-alpine AS build-node
|
|
|
|
# 前端程序
|
|
# COPY ./omc_web /web
|
|
COPY./omc_web/src /web/src
|
|
COPY./omc_web/public /web/public
|
|
COPY./omc_web/index.html /web/index.html
|
|
COPY./omc_web/.env.production /web/.env.production
|
|
COPY./omc_web/.env.development /web/.env.development
|
|
COPY./omc_web/package-lock.json /web/package-lock.json
|
|
COPY./omc_web/package.json /web/package.json
|
|
COPY./omc_web/tsconfig.json /web/tsconfig.json
|
|
COPY./omc_web/tsconfig.node.json /web/tsconfig.node.json
|
|
COPY./omc_web/vite.config.ts /web/vite.config.ts
|
|
RUN npm config set registry https://registry.npmmirror.com
|
|
RUN cd /web && npm install && npm run build
|
|
RUN touch /web/dist/config.js && echo 'sessionStorage.clear()' | tee /web/dist/config.js
|
|
|
|
# 后端程序
|
|
# COPY ./omc_api /api
|
|
COPY ./omc_api/features /api/features
|
|
COPY ./omc_api/lib /api/lib
|
|
COPY ./omc_api/src /api/src
|
|
COPY ./omc_api/sshsvc /api/sshsvc
|
|
COPY ./omc_api/swagger_docs /api/swagger_docs
|
|
COPY ./omc_api/go.sum /api/go.sum
|
|
COPY ./omc_api/go.mod /api/go.mod
|
|
COPY ./omc_api/main.go /api/main.go
|
|
|
|
# 系统文件
|
|
COPY ./omc_api/docker/linux /linux
|
|
|
|
|
|
## 第二阶段 ====> Go打包编译输出后端程序
|
|
FROM golang:1.24-alpine AS build-golang
|
|
|
|
# 从上个阶段复制文件
|
|
COPY --from=build-node /web/dist /web
|
|
COPY --from=build-node /api /api
|
|
COPY --from=build-node /linux /linux
|
|
|
|
# 安装其他依赖
|
|
RUN apk add gcc musl-dev libpcap-dev
|
|
|
|
# 设置变量
|
|
ENV CGO_ENABLED 1
|
|
ENV GOOS linux
|
|
ENV GOPROXY https://goproxy.cn,direct
|
|
|
|
ARG VERSION
|
|
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)'"
|
|
RUN cd /api/sshsvc && go build -o sshsvc -v -ldflags "-s -w \
|
|
-X 'be.ems/lib/global.Version=${VERSION}' \
|
|
-X 'be.ems/lib/global.BuildTime=$(date)' \
|
|
-X 'be.ems/lib/global.GoVer=$(go version)'"
|
|
|
|
|
|
## 第三阶段 ====> 构建前后端融合镜像
|
|
FROM ubuntu:22.04
|
|
|
|
# 更新apt并安装必要工具
|
|
RUN apt update -y && apt install -y \
|
|
sudo systemd libpcap-dev tzdata nginx
|
|
|
|
# 设置时区和语言环境
|
|
ENV LANG="en_US.UTF-8"
|
|
ENV TZ="Asia/Shanghai"
|
|
|
|
WORKDIR /usr/local/etc/omc
|
|
COPY --from=build-golang /linux /
|
|
COPY --from=build-golang /web /usr/local/etc/omc/web
|
|
COPY --from=build-golang /api/omc /usr/local/bin/omc
|
|
COPY --from=build-golang /api/sshsvc/sshsvc /usr/local/bin/sshsvc
|
|
|
|
EXPOSE 80 443 33030
|
|
|
|
CMD ["/sbin/init"]
|
|
|
|
# 构建
|
|
# docker build --build-arg VERSION=241101 -t omc:2.241101 .
|
|
# docker run -it omc:2.241101 sh
|
|
# service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml
|