1
0

feat: 添加对alpine3.20的支持并更新相关Dockerfile和脚本

This commit is contained in:
TsMask
2025-05-21 16:14:52 +08:00
parent e279b75c49
commit 6e769c468d
6 changed files with 33 additions and 83 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 stdd 标准版需外接 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/
```

View File

@@ -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