From 6e769c468db45e8ecc98d0292e223761489b174c Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Wed, 21 May 2025 16:14:52 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=AF=B9alpine3.20?= =?UTF-8?q?=E7=9A=84=E6=94=AF=E6=8C=81=E5=B9=B6=E6=9B=B4=E6=96=B0=E7=9B=B8?= =?UTF-8?q?=E5=85=B3Dockerfile=E5=92=8C=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build-docker.sh | 1 + pkg-docker.sh | 3 +- pkg/docker/Dockerfile.alpine3.20 | 21 +++-- pkg/docker/Dockerfile.ubuntu22.04 | 3 +- pkg/docker/README.md | 82 +++---------------- .../usr/local/etc/omc/script/postunpack.sh | 6 ++ 6 files changed, 33 insertions(+), 83 deletions(-) diff --git a/build-docker.sh b/build-docker.sh index f22e7c5..320c998 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -59,6 +59,7 @@ echo "Platform: $PLATFORM" if [ -n "$SYSTEM" ]; then case $SYSTEM in ubuntu22.04) ;; + alpine3.20) ;; *) echo "unknown system image: $SYSTEM" exit 1 diff --git a/pkg-docker.sh b/pkg-docker.sh index 1b9e7bc..cc2bef2 100644 --- a/pkg-docker.sh +++ b/pkg-docker.sh @@ -100,7 +100,8 @@ echo "===> vendor data copy to $output" # =================== build docker image echo -bash $BuildDir/build-docker.sh -v $VERSION -p amd64 -s ubuntu22.04 +# bash $BuildDir/build-docker.sh -v $VERSION -p amd64 -s ubuntu22.04 +bash $BuildDir/build-docker.sh -v $VERSION -p amd64 -s alpine3.20 # Compile the front-end and back-end and then package the version # bash pkg-docker.sh -v 2.2505.2 diff --git a/pkg/docker/Dockerfile.alpine3.20 b/pkg/docker/Dockerfile.alpine3.20 index 15540da..07811d9 100644 --- a/pkg/docker/Dockerfile.alpine3.20 +++ b/pkg/docker/Dockerfile.alpine3.20 @@ -54,14 +54,13 @@ 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 nginx tzdata && rm -rf /var/cache/apk/* +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 -SHELL ["/bin/bash", "-o", "errexit", "-o", "nounset", "-o", "pipefail", "-c"] RUN chmod +x /usr/local/etc/omc/script/*.sh RUN /usr/local/etc/omc/script/postunpack.sh @@ -69,13 +68,17 @@ EXPOSE 80 443 33030 33443 33033 33034 33060 CMD [ "/usr/local/etc/omc/script/entrypoint.sh" ] -# build 546 MB -# docker docker build --platform linux/amd64 --build-arg TARGETARCH=amd64 --build-arg VERSION=2.2505.2 -t omc:r2.2505.2-ubuntu22.04-amd64 . +# 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 . -# service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml -# docker run -it omc:r2.2505.2-ubuntu22.04-amd64 /bin/bash +# docker run --network omcnet -it omc:2.2505.2-alpine3.20-amd64 /bin/bash -# docker run --privileged=true --restart=always -m 512M --name omc_2.2505.2 -d omc:r2.2505.2-ubuntu22.04-amd64 +# 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 -# docker rm -f omc_2.2505.2 -# docker run -it omc_2.2505.2 bash diff --git a/pkg/docker/Dockerfile.ubuntu22.04 b/pkg/docker/Dockerfile.ubuntu22.04 index f79f422..7fc28e6 100644 --- a/pkg/docker/Dockerfile.ubuntu22.04 +++ b/pkg/docker/Dockerfile.ubuntu22.04 @@ -68,7 +68,6 @@ ENV LANG="en_US.UTF-8" ENV TZ="Asia/Shanghai" WORKDIR /usr/local/etc/omc -SHELL ["/bin/bash", "-o", "errexit", "-o", "nounset", "-o", "pipefail", "-c"] RUN chmod +x /usr/local/etc/omc/script/*.sh RUN /usr/local/etc/omc/script/postunpack.sh @@ -77,7 +76,7 @@ EXPOSE 80 443 33030 33443 33033 33034 33060 CMD [ "/usr/local/etc/omc/script/entrypoint.sh" ] # build 707MB -# docker docker build --platform linux/amd64 --build-arg TARGETARCH=amd64 --build-arg VERSION=2.2505.2 -t omc:r2.2505.2-ubuntu22.04-amd64 . +# docker docker build --platform linux/amd64 --build-arg TARGETARCH=amd64 --build-arg VERSION=2.2505.2 -t omc:2.2505.2-ubuntu22.04-amd64 . # docker run --network omcnet -it omc:2.2505.2-ubuntu22.04-amd64 /bin/bash diff --git a/pkg/docker/README.md b/pkg/docker/README.md index 9dc4925..b6fe625 100644 --- a/pkg/docker/README.md +++ b/pkg/docker/README.md @@ -1,28 +1,14 @@ # Docker 编译 -编译目录内含 `omc_web` 和 `omc_api` 两个项目代码 - -将后端项目代码中的 `docker/Dockerfile` 文件移动到最外层目录下,`docker/omc`是内部文件挂载的文件资源。 - -编译目录结构 - -```text -probject -├── omc_web 目录-前端项目代码 -├── omc_api 目录-后端项目代码 -└── Dockerfile 文件-Docker编译需要 -``` - 内部文件资源 | 路径 | 说明 | | --------------------------- | -------------------------- | -| /usr/local/etc/omc/static | 网管静态资源文件路径 | -| /usr/local/etc/omc/upload | 网管上传文件资源路径 | +| /usr/local/omc/static | 网管静态资源文件路径 | +| /usr/local/omc/upload | 网管上传文件资源路径 | | /usr/local/etc/omc/omc.yaml | 网管配置文件 | -| /usr/local/etc/omc | 网管与网元之间相关文件 | -| /etc/nginx/cert | 网管前端 nginx 代理证书 | -| /etc/nginx/nginx.conf | 网管前端 nginx 代理配置 | +| /etc/nginx/nginx.conf | nginx 配置 | +| /etc/nginx/conf.d/omc.conf | 网管前端 nginx 代理配置 | | /var/log | 网管相关日志输出 | | /tmp/omc | 存放从网元拉取到本地的文件 | @@ -30,7 +16,6 @@ probject | 端口 | 说明 | | ----- | ----------------------------- | -| 22 | 网管 容器内部 SSH 服务 | | 80 | 网管 Nginx HTTP 服务 | | 443 | 网管 Nginx HTTP2 服务 | | 33030 | 网管后台 API HTTP 服务 | @@ -38,55 +23,12 @@ probject | 33033 | 网管信令跟踪 UDP 协议接收服务 | | 33060 | 网管性能分析监控 metrics 服务 | -## 编译 +容器变量 -- `VERSION` 变量是后端程序打包版本号注入 - -```sh - -docker build --build-arg VERSION="241212" -t omc:2.2412.1 . - -``` - -## 部署 - -- `APPENV` 程序启动环境变量 local、prod (-e APPENV="local") - -```sh - -docker run -d \ ---privileged=true \ ---restart=always \ --p 8822:22 \ --p 8880:80 \ --p 8884:443 \ --p 8830:33030 \ --p 8833:33033 \ --p 8860:33060 \ --v /home/manager/probject/omc_api/docker/omc:/usr/local/etc/omc \ --v /home/manager/probject/omc_api/docker/omc/logs:/var/log \ --v /home/manager/probject/omc_api/docker/omc/tmp:/tmp/omc \ --v /home/manager/probject/omc_api/docker/omc/nginx/cert:/etc/nginx/cert \ --v /home/manager/probject/omc_api/docker/omc/nginx/nginx.conf:/etc/nginx/nginx.conf \ --e TZ="Asia/Shanghai" \ --e APPENV="prod" \ --m 512M \ ---name omc \ -omc:2.2412.1 - -``` - -## 调试 - -```sh - -docker run -it omc:xxx sh - -docker exec -it omc:xxx sh - -service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml - -``` +| 属性 | 说明 | +| ------- | ------------------------------------------------------------------------- | +| M_PARAM | 服务模式(std、lite) std:d 标准版需外接 mariadb lite:轻量版内置 sqlite | +| C_PARAM | 相关厂商定制 | ## 镜像导出导入 @@ -101,9 +43,7 @@ docker load -i omc_xx.tar sudo bash omc-docker.sh install -mkdir omc-r2.2412.1-ub22-cloud -tar -czvf omc-r2.2412.1-ub22-cloud.tgz omc-r2.2412.1-ub22-cloud/ -tar -xzvf omc-r2.2412.1-ub22-cloud.tgz +tar -czvf omc-r2.2505.2-docker-alpine3.20-amd64.tar.gz omc-r2.2505.2-docker-alpine3.20-amd64/ +tar -xzvf omc-r2.2505.2-docker-alpine3.20-amd64.tar.gz -scp omc_2.2412.1.tar manager@192.168.9.59:/home/manager/omc-r2.2412.1-ub22-cloud/tar/ ``` diff --git a/pkg/docker/linux/usr/local/etc/omc/script/postunpack.sh b/pkg/docker/linux/usr/local/etc/omc/script/postunpack.sh index ae2a654..e85a4d4 100644 --- a/pkg/docker/linux/usr/local/etc/omc/script/postunpack.sh +++ b/pkg/docker/linux/usr/local/etc/omc/script/postunpack.sh @@ -28,8 +28,14 @@ sed -i 's/port: 33066/port: 3306/' "$BASE_DIR"/omc.yaml sed -i 's/host: "127.0.0.1" # Redis host$/host: "omc_keydb" # Redis host/' "$BASE_DIR"/omc.yaml # Nginx config +sed -i 's/#gzip on;/gzip on;/' /etc/nginx/nginx.conf +sed -i '/^include \/etc\/nginx\/conf.d/s/^/# /' /etc/nginx/nginx.conf +sed -i 's/include \/etc\/nginx\/http.d/include \/etc\/nginx\/conf.d/' /etc/nginx/nginx.conf + sed -i 's/# gzip_/gzip_/' /etc/nginx/nginx.conf sed -i 's/include \/etc\/nginx\/sites-enabled/# include \/etc\/nginx\/sites-enabled/' /etc/nginx/nginx.conf +rm -rf /etc/nginx/conf.d && mkdir -p /etc/nginx/conf.d + cp -rf /usr/local/etc/omc/nginx/omc.conf /etc/nginx/conf.d touch /usr/local/etc/omc/web/config.js && echo 'sessionStorage.clear()' | tee /usr/local/etc/omc/web/config.js sed -i "s/33030;/$API_HTTP_PORT;/" /etc/nginx/conf.d/omc.conf