From 04eb36e8991c29ca1c4f3fe37c53d629a7935ade Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 15 May 2025 15:19:27 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0Docker=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=92=8C=E7=AE=A1=E7=90=86=E8=84=9A=E6=9C=AC=EF=BC=8C?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=9E=84=E5=BB=BA=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-docker.sh | 2 +- pkg-docker.sh | 100 +++++++++++++++++++ pkg/docker/Dockerfile.ubuntu22.04.amd64 | 46 ++++----- pkg/docker/docker/{script => }/omc-docker.sh | 0 4 files changed, 124 insertions(+), 24 deletions(-) create mode 100644 pkg-docker.sh rename pkg/docker/docker/{script => }/omc-docker.sh (100%) diff --git a/build-docker.sh b/build-docker.sh index 1039bba..2305cfb 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -147,7 +147,7 @@ docker_build() { # =================== building echo echo "building omc..." -rm -rf ${BuildDir} && mkdir -p ${BuildDir}/${ReleaseFileName} +mkdir -p ${BuildDir}/${ReleaseFileName} cp -rf ${BuildPackagelDir}/docker/Dockerfile.${SYSTEM}.${PLATFORM_ARCH} ${BuildDir}/Dockerfile cp -rf ${BuildPackagelDir}/docker/script/* ${BuildDir}/${ReleaseFileName} cp -rf ${BuildLinuxDir} ${BuildDir} diff --git a/pkg-docker.sh b/pkg-docker.sh new file mode 100644 index 0000000..77f0f3a --- /dev/null +++ b/pkg-docker.sh @@ -0,0 +1,100 @@ +#!/bin/bash + +# front-end Catalog +WebDir=/root/omc.git/fe.ems.vue3 +WebBranch=main +# back-end catalog +ApiDir=/root/omc.git/be.ems +ApiBranch=main +# Package Catalog +BuildDir=/root/omc.git/build.ems +BuildTmpDir=/root/omc.git/build.ems/tmp +# Default Version Value +VERSION="2.2503.2" + +# usage +usage() { + echo "Usage: bash $0 [OPTION]" + echo + echo "Build Software Package OPTION:" + echo " -v Specify the version" + echo " -webBranch Web Branch ($WebBranch)" + echo " -apiBranch Api Branch ($ApiBranch)" + echo " -h Display this help message" + echo + exit 1 +} +# Read command line arguments +while [[ $# -gt 0 ]]; do + case "$1" in + -v) VERSION="$2"; shift 2 ;; + -webBranch) WebBranch="$2"; shift 2 ;; + -apiBranch) ApiBranch="$2"; shift 2 ;; + *) usage ;; + esac +done +rm -rf ${BuildTmpDir} && mkdir -p ${BuildTmpDir} + +# =================== Web +echo +cd $WebDir +git checkout . +git pull +git checkout $WebBranch +git pull + +# cp -rf $WebDir $BuildTmpDir/omc_web +mkdir -p $BuildTmpDir/omc_web +cp -rf $WebDir/src $BuildTmpDir/omc_web +cp -rf $WebDir/public $BuildTmpDir/omc_web +cp -rf $WebDir/index.html $BuildTmpDir/omc_web +cp -rf $WebDir/.env.production $BuildTmpDir/omc_web +cp -rf $WebDir/.env.development $BuildTmpDir/omc_web +cp -rf $WebDir/package-lock.json $BuildTmpDir/omc_web +cp -rf $WebDir/package.json $BuildTmpDir/omc_web +cp -rf $WebDir/tsconfig.json $BuildTmpDir/omc_web +cp -rf $WebDir/tsconfig.node.json $BuildTmpDir/omc_web +cp -rf $WebDir/vite.config.ts $BuildTmpDir/omc_web +echo "===> web source code to $BuildTmpDir/omc_web" + +# =================== Api +echo +cd $ApiDir +git checkout . +git pull +git checkout $ApiBranch +git pull + +# cp -rf $ApiDir $BuildTmpDir/omc_api +mkdir -p $BuildTmpDir/omc_api +cp -rf $ApiDir/features $BuildTmpDir/omc_api +cp -rf $ApiDir/lib $BuildTmpDir/omc_api +cp -rf $ApiDir/src $BuildTmpDir/omc_api +cp -rf $ApiDir/sshsvc $BuildTmpDir/omc_api +cp -rf $ApiDir/swagger_docs $BuildTmpDir/omc_api +cp -rf $ApiDir/go.sum $BuildTmpDir/omc_api +cp -rf $ApiDir/go.mod $BuildTmpDir/omc_api +cp -rf $ApiDir/main.go $BuildTmpDir/omc_api +echo "===> omc source code to $BuildTmpDir/omc_api" + +# Vendor Database +output=$BuildDir/linux/usr/local/etc/omc +dirs="database default vendor" +for v in ${dirs}; do + rm -rf ${output}/${v} + cp -rf ${ApiDir}/build/${v} ${output}/${v} +done +echo +echo "===> vendor data copy to $output" + + +# =================== build docker image +echo +bash $BuildDir/build-docker.sh --version $VERSION --platform linux/amd64 --system ubuntu22.04 + +# Compile the front-end and back-end and then package the version +# bash pkg.sh --web -webBranch main --api -apiBranch main -v 2.2503.2 +# bash pkg.sh --web --api -v 2.2503.2 +# bash pkg.sh --api -apiBranch main -v 2.2503.2 +# Packaged version of just the last compiled file/build directory +# bash pkg.sh -v 2.2503.2 diff --git a/pkg/docker/Dockerfile.ubuntu22.04.amd64 b/pkg/docker/Dockerfile.ubuntu22.04.amd64 index a6aa617..62f4cff 100644 --- a/pkg/docker/Dockerfile.ubuntu22.04.amd64 +++ b/pkg/docker/Dockerfile.ubuntu22.04.amd64 @@ -2,38 +2,38 @@ 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 +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 /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 +COPY ./omc_api/linux /linux ## 第二阶段 ====> Go打包编译输出后端程序 -FROM golang:1.24-alpine AS build-golang +FROM --platform=linux/amd64 golang:1.24-alpine AS build-golang # 从上个阶段复制文件 COPY --from=build-node /web/dist /web @@ -61,7 +61,7 @@ RUN cd /api/sshsvc && go build -o sshsvc -v -ldflags "-s -w \ ## 第三阶段 ====> 构建前后端融合镜像 -FROM ubuntu:22.04 +FROM --platform=linux/amd64 ubuntu:22.04 # 更新apt并安装必要工具 RUN apt update -y && apt install -y \ diff --git a/pkg/docker/docker/script/omc-docker.sh b/pkg/docker/docker/omc-docker.sh similarity index 100% rename from pkg/docker/docker/script/omc-docker.sh rename to pkg/docker/docker/omc-docker.sh