feat: 添加Docker构建和管理脚本,优化构建流程
This commit is contained in:
@@ -147,7 +147,7 @@ docker_build() {
|
|||||||
# =================== building
|
# =================== building
|
||||||
echo
|
echo
|
||||||
echo "building omc..."
|
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/Dockerfile.${SYSTEM}.${PLATFORM_ARCH} ${BuildDir}/Dockerfile
|
||||||
cp -rf ${BuildPackagelDir}/docker/script/* ${BuildDir}/${ReleaseFileName}
|
cp -rf ${BuildPackagelDir}/docker/script/* ${BuildDir}/${ReleaseFileName}
|
||||||
cp -rf ${BuildLinuxDir} ${BuildDir}
|
cp -rf ${BuildLinuxDir} ${BuildDir}
|
||||||
|
|||||||
100
pkg-docker.sh
Normal file
100
pkg-docker.sh
Normal file
@@ -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
|
||||||
@@ -2,38 +2,38 @@
|
|||||||
FROM node:20-alpine AS build-node
|
FROM node:20-alpine AS build-node
|
||||||
|
|
||||||
# 前端程序
|
# 前端程序
|
||||||
# COPY ./omc_web /web
|
COPY ./omc_web /web
|
||||||
COPY./omc_web/src /web/src
|
# COPY./omc_web/src /web/src
|
||||||
COPY./omc_web/public /web/public
|
# COPY./omc_web/public /web/public
|
||||||
COPY./omc_web/index.html /web/index.html
|
# COPY./omc_web/index.html /web/index.html
|
||||||
COPY./omc_web/.env.production /web/.env.production
|
# COPY./omc_web/.env.production /web/.env.production
|
||||||
COPY./omc_web/.env.development /web/.env.development
|
# COPY./omc_web/.env.development /web/.env.development
|
||||||
COPY./omc_web/package-lock.json /web/package-lock.json
|
# COPY./omc_web/package-lock.json /web/package-lock.json
|
||||||
COPY./omc_web/package.json /web/package.json
|
# COPY./omc_web/package.json /web/package.json
|
||||||
COPY./omc_web/tsconfig.json /web/tsconfig.json
|
# COPY./omc_web/tsconfig.json /web/tsconfig.json
|
||||||
COPY./omc_web/tsconfig.node.json /web/tsconfig.node.json
|
# COPY./omc_web/tsconfig.node.json /web/tsconfig.node.json
|
||||||
COPY./omc_web/vite.config.ts /web/vite.config.ts
|
# COPY./omc_web/vite.config.ts /web/vite.config.ts
|
||||||
RUN npm config set registry https://registry.npmmirror.com
|
RUN npm config set registry https://registry.npmmirror.com
|
||||||
RUN cd /web && npm install && npm run build
|
RUN cd /web && npm install && npm run build
|
||||||
RUN touch /web/dist/config.js && echo 'sessionStorage.clear()' | tee /web/dist/config.js
|
RUN touch /web/dist/config.js && echo 'sessionStorage.clear()' | tee /web/dist/config.js
|
||||||
|
|
||||||
# 后端程序
|
# 后端程序
|
||||||
# COPY ./omc_api /api
|
COPY ./omc_api /api
|
||||||
COPY ./omc_api/features /api/features
|
# COPY ./omc_api/features /api/features
|
||||||
COPY ./omc_api/lib /api/lib
|
# COPY ./omc_api/lib /api/lib
|
||||||
COPY ./omc_api/src /api/src
|
# COPY ./omc_api/src /api/src
|
||||||
COPY ./omc_api/sshsvc /api/sshsvc
|
# COPY ./omc_api/sshsvc /api/sshsvc
|
||||||
COPY ./omc_api/swagger_docs /api/swagger_docs
|
# COPY ./omc_api/swagger_docs /api/swagger_docs
|
||||||
COPY ./omc_api/go.sum /api/go.sum
|
# COPY ./omc_api/go.sum /api/go.sum
|
||||||
COPY ./omc_api/go.mod /api/go.mod
|
# COPY ./omc_api/go.mod /api/go.mod
|
||||||
COPY ./omc_api/main.go /api/main.go
|
# COPY ./omc_api/main.go /api/main.go
|
||||||
|
|
||||||
# 系统文件
|
# 系统文件
|
||||||
COPY ./omc_api/docker/linux /linux
|
COPY ./omc_api/linux /linux
|
||||||
|
|
||||||
|
|
||||||
## 第二阶段 ====> Go打包编译输出后端程序
|
## 第二阶段 ====> 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
|
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并安装必要工具
|
# 更新apt并安装必要工具
|
||||||
RUN apt update -y && apt install -y \
|
RUN apt update -y && apt install -y \
|
||||||
|
|||||||
Reference in New Issue
Block a user