diff --git a/build-docker.sh b/build-docker.sh index e5a7e08..00bb362 100644 --- a/build-docker.sh +++ b/build-docker.sh @@ -106,23 +106,29 @@ app() { docker_build() { 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 - if ! docker images | grep -q "mariadb\s*10.6.21"; then - docker pull mariadb:10.6.21 + if ! docker images | grep -q "mariadb-$PLATFORM\s*10.6.21"; then + docker pull --platform linux/${PLATFORM} mariadb:10.6.21 + docker tag mariadb:10.6.21 mariadb-$PLATFORM:10.6.21 fi - if [ ! -f ${BuildDir}/$ReleaseFileName/tar/mariadb_10.6.21.tar ]; then - docker save mariadb:10.6.21 -o ${BuildDir}/${ReleaseFileName}/tar/mariadb_10.6.21.tar + if [ ! -f ${BuildDir}/$ReleaseFileName/tar/mariadb_10.6.21_$PLATFORM.tar ]; then + docker save mariadb-$PLATFORM:10.6.21 -o ${BuildDir}/${ReleaseFileName}/tar/mariadb_10.6.21_$PLATFORM.tar fi - if ! docker images | grep -q "bitnami/keydb\s*6.3.4"; then - docker pull bitnami/keydb:6.3.4 + if ! docker images | grep -q "keydb-$PLATFORM\s*6.3.4"; then + docker pull --platform linux/${PLATFORM} bitnami/keydb:6.3.4 + docker tag bitnami/keydb:6.3.4 keydb-$PLATFORM:6.3.4 fi - if [ ! -f ${BuildDir}/$ReleaseFileName/tar/keydb_6.3.4.tar ]; then - docker save bitnami/keydb:6.3.4 -o ${BuildDir}/${ReleaseFileName}/tar/keydb_6.3.4.tar + if [ ! -f ${BuildDir}/$ReleaseFileName/tar/keydb_6.3.4_$PLATFORM.tar ]; then + docker save keydb-$PLATFORM:6.3.4 -o ${BuildDir}/${ReleaseFileName}/tar/keydb_6.3.4_$PLATFORM.tar fi # build omc - docker build --platform linux/${PLATFORM} --build-arg VERSION=${VERSION} -t omc:${VERSION} . - docker save omc:${VERSION} -o ${BuildDir}/${ReleaseFileName}/tar/omc_${VERSION}.tar + docker build --platform linux/${PLATFORM} --build-arg VERSION=${VERSION} -t omc:r${VERSION}-${SYSTEM}-${PLATFORM} . + docker save omc:r${VERSION}-${SYSTEM}-${PLATFORM} -o ${BuildDir}/${ReleaseFileName}/tar/omc_r${VERSION}-${SYSTEM}-${PLATFORM}.tar # tar package tar -czvf ${ReleaseDir}/${ReleaseFileName}.tar ./${ReleaseFileName} diff --git a/pkg/docker/Dockerfile.ubuntu22.04 b/pkg/docker/Dockerfile.ubuntu22.04 index e8bed73..e995d70 100644 --- a/pkg/docker/Dockerfile.ubuntu22.04 +++ b/pkg/docker/Dockerfile.ubuntu22.04 @@ -20,8 +20,10 @@ COPY --from=build-node /web/dist /web COPY --from=build-node /api /api 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 @@ -53,10 +55,11 @@ ENV LANG="en_US.UTF-8" ENV TZ="Asia/Shanghai" WORKDIR /usr/local/etc/omc -COPY --from=build-golang /linux / -COPY --from=build-golang /web /usr/local/etc/omc/web +COPY --from=build-golang /linux/lib/systemd/system/* /lib/systemd/system +COPY --from=build-golang /linux/usr/local/* /usr/local 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 /web /usr/local/etc/omc/web 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 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 +# 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 diff --git a/pkg/docker/release/omc-docker.sh b/pkg/docker/release/omc-docker.sh index a52380c..aa65102 100644 --- a/pkg/docker/release/omc-docker.sh +++ b/pkg/docker/release/omc-docker.sh @@ -1,8 +1,8 @@ #!/bin/bash -OMC_CONTAINER_NAME="omc" -MYSQL_CONTAINER_NAME="omc_mysql" -REDIS_CONTAINER_NAME="omc_redis" +OMC_CONTAINER_NAME="omc_{version}_{arch}" +MYSQL_CONTAINER_NAME="omc_mariadb_10.6.21_{arch}" +REDIS_CONTAINER_NAME="omc_keydb_6.3.4_{arch}" # usage usage() { @@ -16,9 +16,9 @@ install(){ echo "Install mysql and redis service program, default N (Y/N):" read DB_SERVICE 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 - OMC_FILE=${OMC_FILE:-"omc_2.2412.1.tar"} + OMC_FILE=${OMC_FILE:-"omc_{version}_{arch}.tar"} echo "Container time zone (Asia/Shanghai):" read OMC_TZ OMC_TZ=${OMC_TZ:-"Asia/Shanghai"} @@ -53,16 +53,14 @@ install(){ fi echo "==> Install service mysql and redis container" - MYSQL_CONTAINER_NAME="omc_mysql" - REDIS_CONTAINER_NAME="omc_redis" if [[ "$DB_SERVICE" =~ ^[Yy]$ ]]; then # MySQL Config mysql_container=$(docker ps --filter "name=$MYSQL_CONTAINER_NAME" --format "{{.Names}}") if [[ -z "$mysql_container" ]]; then echo "MySQL container is not running. Installing MySQL container..." - docker load --input $(pwd)/tar/mysql_8.0.39.tar - MYSQL_IMAGE="mysql:8.0.39" + docker load --input $(pwd)/tar/mariadb_10.6.21_{arch}.tar + MYSQL_IMAGE="mariadb-{arch}:10.6.21" MYSQL_ROOT_PASSWORD="1000omc@kp!" SQL_FILE_PATH="$(pwd)/sql/install/omc_db.sql" 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}}") if [[ -z "$redis_container" ]]; then echo "Redis container is not running. Installing Redis container..." - docker load --input $(pwd)/tar/redis_7.2.5.tar - REDIS_IMAGE="redis:7.2.5" + docker load --input $(pwd)/tar/keydb_6.3.4_{arch}.tar + REDIS_IMAGE="keydb-{arch}:6.3.4" REDIS_PASSWORD="helloearth" REDIS_DATA=/usr/local/etc/$REDIS_CONTAINER_NAME/data mkdir -p $REDIS_DATA docker run --privileged=true --restart=always -e TZ="$OMC_TZ" \ - -e REDIS_PASSWORD=$REDIS_PASSWORD \ - -v $REDIS_DATA:/data \ + -e KEYDB_PASSWORD=$REDIS_PASSWORD \ + -v $REDIS_DATA:/bitnami/keydb/data \ --network $NETWORK \ --name $REDIS_CONTAINER_NAME \ -d $REDIS_IMAGE @@ -102,19 +100,8 @@ install(){ echo "==> Loading service omc container" 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$//') 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 \ -p $OMC_HTTP_PORT:80 \ -p $OMC_HTTPS_PORT:443 \