1
0

fix: 更新Docker构建脚本

This commit is contained in:
TsMask
2025-05-16 17:28:57 +08:00
parent 0fe95af9c3
commit ccad67ca7a
3 changed files with 35 additions and 37 deletions

View File

@@ -106,23 +106,29 @@ app() {
docker_build() { docker_build() {
cd ${BuildDir} cd ${BuildDir}
# Replacement Tags {version} {arch}
sed -i "s/{version}/${VERSION}/g" ./${ReleaseFileName}/omc-docker.sh
sed -i "s/{arch}/${PLATFORM}/g" ./${ReleaseFileName}/omc-docker.sh
# check docker image # check docker image
if ! docker images | grep -q "mariadb\s*10.6.21"; then if ! docker images | grep -q "mariadb-$PLATFORM\s*10.6.21"; then
docker pull mariadb:10.6.21 docker pull --platform linux/${PLATFORM} mariadb:10.6.21
docker tag mariadb:10.6.21 mariadb-$PLATFORM:10.6.21
fi fi
if [ ! -f ${BuildDir}/$ReleaseFileName/tar/mariadb_10.6.21.tar ]; then if [ ! -f ${BuildDir}/$ReleaseFileName/tar/mariadb_10.6.21_$PLATFORM.tar ]; then
docker save mariadb:10.6.21 -o ${BuildDir}/${ReleaseFileName}/tar/mariadb_10.6.21.tar docker save mariadb-$PLATFORM:10.6.21 -o ${BuildDir}/${ReleaseFileName}/tar/mariadb_10.6.21_$PLATFORM.tar
fi fi
if ! docker images | grep -q "bitnami/keydb\s*6.3.4"; then if ! docker images | grep -q "keydb-$PLATFORM\s*6.3.4"; then
docker pull bitnami/keydb:6.3.4 docker pull --platform linux/${PLATFORM} bitnami/keydb:6.3.4
docker tag bitnami/keydb:6.3.4 keydb-$PLATFORM:6.3.4
fi fi
if [ ! -f ${BuildDir}/$ReleaseFileName/tar/keydb_6.3.4.tar ]; then if [ ! -f ${BuildDir}/$ReleaseFileName/tar/keydb_6.3.4_$PLATFORM.tar ]; then
docker save bitnami/keydb:6.3.4 -o ${BuildDir}/${ReleaseFileName}/tar/keydb_6.3.4.tar docker save keydb-$PLATFORM:6.3.4 -o ${BuildDir}/${ReleaseFileName}/tar/keydb_6.3.4_$PLATFORM.tar
fi fi
# build omc # build omc
docker build --platform linux/${PLATFORM} --build-arg VERSION=${VERSION} -t omc:${VERSION} . docker build --platform linux/${PLATFORM} --build-arg VERSION=${VERSION} -t omc:r${VERSION}-${SYSTEM}-${PLATFORM} .
docker save omc:${VERSION} -o ${BuildDir}/${ReleaseFileName}/tar/omc_${VERSION}.tar docker save omc:r${VERSION}-${SYSTEM}-${PLATFORM} -o ${BuildDir}/${ReleaseFileName}/tar/omc_r${VERSION}-${SYSTEM}-${PLATFORM}.tar
# tar package # tar package
tar -czvf ${ReleaseDir}/${ReleaseFileName}.tar ./${ReleaseFileName} tar -czvf ${ReleaseDir}/${ReleaseFileName}.tar ./${ReleaseFileName}

View File

@@ -20,8 +20,10 @@ COPY --from=build-node /web/dist /web
COPY --from=build-node /api /api COPY --from=build-node /api /api
COPY --from=build-node /linux /linux COPY --from=build-node /linux /linux
# 更换镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 安装其他依赖 # 安装其他依赖
RUN apk add gcc musl-dev libpcap-dev RUN apk update && apk add gcc musl-dev libpcap-dev && rm -rf /var/cache/apk/*
# 设置变量 # 设置变量
ENV CGO_ENABLED=1 ENV CGO_ENABLED=1
@@ -53,10 +55,11 @@ ENV LANG="en_US.UTF-8"
ENV TZ="Asia/Shanghai" ENV TZ="Asia/Shanghai"
WORKDIR /usr/local/etc/omc WORKDIR /usr/local/etc/omc
COPY --from=build-golang /linux / COPY --from=build-golang /linux/lib/systemd/system/* /lib/systemd/system
COPY --from=build-golang /web /usr/local/etc/omc/web COPY --from=build-golang /linux/usr/local/* /usr/local
COPY --from=build-golang /api/omc /usr/local/bin/omc COPY --from=build-golang /api/omc /usr/local/bin/omc
COPY --from=build-golang /api/sshsvc/sshsvc /usr/local/bin/sshsvc COPY --from=build-golang /api/sshsvc/sshsvc /usr/local/bin/sshsvc
COPY --from=build-golang /web /usr/local/etc/omc/web
EXPOSE 80 443 33030 EXPOSE 80 443 33030
@@ -66,3 +69,5 @@ CMD ["/sbin/init"]
# docker build --platform linux/amd64 --build-arg VERSION=2.2505.2 -t omc:2.2505.2 . # docker build --platform linux/amd64 --build-arg VERSION=2.2505.2 -t omc:2.2505.2 .
# docker run -it omc:2.2505.2 sh # docker run -it omc:2.2505.2 sh
# service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml # service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml
# docker run --rm omc:r1.0.0-docker-ubuntu22.04-amd64 bash
# docker run --privileged=true --restart=always -m 512M --name omc_2.2505.2 -d omc:r1.0.0-docker-ubuntu22.04-amd64

View File

@@ -1,8 +1,8 @@
#!/bin/bash #!/bin/bash
OMC_CONTAINER_NAME="omc" OMC_CONTAINER_NAME="omc_{version}_{arch}"
MYSQL_CONTAINER_NAME="omc_mysql" MYSQL_CONTAINER_NAME="omc_mariadb_10.6.21_{arch}"
REDIS_CONTAINER_NAME="omc_redis" REDIS_CONTAINER_NAME="omc_keydb_6.3.4_{arch}"
# usage # usage
usage() { usage() {
@@ -16,9 +16,9 @@ install(){
echo "Install mysql and redis service program, default N (Y/N):" echo "Install mysql and redis service program, default N (Y/N):"
read DB_SERVICE read DB_SERVICE
DB_SERVICE=${DB_SERVICE:-"N"} DB_SERVICE=${DB_SERVICE:-"N"}
echo "Select the image in the tar directory (omc_2.2412.1.tar):" echo "Select the image in the tar directory (omc_{version}_{arch}.tar):"
read OMC_FILE read OMC_FILE
OMC_FILE=${OMC_FILE:-"omc_2.2412.1.tar"} OMC_FILE=${OMC_FILE:-"omc_{version}_{arch}.tar"}
echo "Container time zone (Asia/Shanghai):" echo "Container time zone (Asia/Shanghai):"
read OMC_TZ read OMC_TZ
OMC_TZ=${OMC_TZ:-"Asia/Shanghai"} OMC_TZ=${OMC_TZ:-"Asia/Shanghai"}
@@ -53,16 +53,14 @@ install(){
fi fi
echo "==> Install service mysql and redis container" echo "==> Install service mysql and redis container"
MYSQL_CONTAINER_NAME="omc_mysql"
REDIS_CONTAINER_NAME="omc_redis"
if [[ "$DB_SERVICE" =~ ^[Yy]$ ]]; then if [[ "$DB_SERVICE" =~ ^[Yy]$ ]]; then
# MySQL Config # MySQL Config
mysql_container=$(docker ps --filter "name=$MYSQL_CONTAINER_NAME" --format "{{.Names}}") mysql_container=$(docker ps --filter "name=$MYSQL_CONTAINER_NAME" --format "{{.Names}}")
if [[ -z "$mysql_container" ]]; then if [[ -z "$mysql_container" ]]; then
echo "MySQL container is not running. Installing MySQL container..." echo "MySQL container is not running. Installing MySQL container..."
docker load --input $(pwd)/tar/mysql_8.0.39.tar docker load --input $(pwd)/tar/mariadb_10.6.21_{arch}.tar
MYSQL_IMAGE="mysql:8.0.39" MYSQL_IMAGE="mariadb-{arch}:10.6.21"
MYSQL_ROOT_PASSWORD="1000omc@kp!" MYSQL_ROOT_PASSWORD="1000omc@kp!"
SQL_FILE_PATH="$(pwd)/sql/install/omc_db.sql" SQL_FILE_PATH="$(pwd)/sql/install/omc_db.sql"
MYSQL_DATA=/usr/local/etc/$MYSQL_CONTAINER_NAME/data MYSQL_DATA=/usr/local/etc/$MYSQL_CONTAINER_NAME/data
@@ -82,14 +80,14 @@ install(){
redis_container=$(docker ps --filter "name=$REDIS_CONTAINER_NAME" --format "{{.Names}}") redis_container=$(docker ps --filter "name=$REDIS_CONTAINER_NAME" --format "{{.Names}}")
if [[ -z "$redis_container" ]]; then if [[ -z "$redis_container" ]]; then
echo "Redis container is not running. Installing Redis container..." echo "Redis container is not running. Installing Redis container..."
docker load --input $(pwd)/tar/redis_7.2.5.tar docker load --input $(pwd)/tar/keydb_6.3.4_{arch}.tar
REDIS_IMAGE="redis:7.2.5" REDIS_IMAGE="keydb-{arch}:6.3.4"
REDIS_PASSWORD="helloearth" REDIS_PASSWORD="helloearth"
REDIS_DATA=/usr/local/etc/$REDIS_CONTAINER_NAME/data REDIS_DATA=/usr/local/etc/$REDIS_CONTAINER_NAME/data
mkdir -p $REDIS_DATA mkdir -p $REDIS_DATA
docker run --privileged=true --restart=always -e TZ="$OMC_TZ" \ docker run --privileged=true --restart=always -e TZ="$OMC_TZ" \
-e REDIS_PASSWORD=$REDIS_PASSWORD \ -e KEYDB_PASSWORD=$REDIS_PASSWORD \
-v $REDIS_DATA:/data \ -v $REDIS_DATA:/bitnami/keydb/data \
--network $NETWORK \ --network $NETWORK \
--name $REDIS_CONTAINER_NAME \ --name $REDIS_CONTAINER_NAME \
-d $REDIS_IMAGE -d $REDIS_IMAGE
@@ -102,19 +100,8 @@ install(){
echo "==> Loading service omc container" echo "==> Loading service omc container"
docker load --input $(pwd)/tar/$OMC_FILE docker load --input $(pwd)/tar/$OMC_FILE
if [ ! -d /usr/local/etc/omc ]; then
mkdir -p /usr/local/etc/omc
cp -rf ./omc/* /usr/local/etc/omc
fi
OMC_IMAGE=$(echo "$OMC_FILE" | sed -e 's/_/:/' -e 's/\.tar$//') OMC_IMAGE=$(echo "$OMC_FILE" | sed -e 's/_/:/' -e 's/\.tar$//')
docker run --privileged=true --restart=always -m 512M \ docker run --privileged=true --restart=always -m 512M \
-v /usr/local/etc/omc:/usr/local/etc/omc \
-v /usr/local/etc/omc/logs:/var/log \
-v /usr/local/etc/omc/tmp:/tmp/omc \
-v /usr/local/etc/omc/nginx/cert:/etc/nginx/cert \
-v /usr/local/etc/omc/nginx/nginx.conf:/etc/nginx/nginx.conf \
-e TZ=$OMC_TZ \ -e TZ=$OMC_TZ \
-p $OMC_HTTP_PORT:80 \ -p $OMC_HTTP_PORT:80 \
-p $OMC_HTTPS_PORT:443 \ -p $OMC_HTTPS_PORT:443 \