diff --git a/auto/images.yaml b/auto/images.yaml index 84b726d..1c6e0a7 100644 --- a/auto/images.yaml +++ b/auto/images.yaml @@ -373,34 +373,81 @@ images: # platforms: # - "linux/amd64" # - "linux/arm64" + - name: "alpine" + from: "alpine" + tags: + - tag: "3.22" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "3.20" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "3.19" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "3.18" + platforms: + - "linux/amd64" + - "linux/arm64" - #- name: "golang" - # from: "golang" - # tags: - # - tag: "1.24" - # platforms: - # - "linux/amd64" - # - "linux/arm64" - # - tag: "1.23" - # platforms: - # - "linux/amd64" - # - "linux/arm64" - # - tag: "1.22" - # platforms: - # - "linux/amd64" - # - "linux/arm64" - # - tag: "1.21" - # platforms: - # - "linux/amd64" - # - "linux/arm64" - # - tag: "1.20" - # platforms: - # - "linux/amd64" - # - "linux/arm64" - # - tag: "1.19" - # platforms: - # - "linux/amd64" - # - "linux/arm64" + - name: "golang" + from: "golang" + tags: + - tag: "1.24-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.23-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.22-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.21-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.20-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.19-alpine3.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.24" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.23" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.22" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.21" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.20" + platforms: + - "linux/amd64" + - "linux/arm64" + - tag: "1.19" + platforms: + - "linux/amd64" + - "linux/arm64" # - name: "python" # from: "python" @@ -602,32 +649,32 @@ images: # - "linux/amd64" # - "linux/arm64" - - name: "mysql" - tags: - - tag: "9.3" - platforms: - - "linux/amd64" - - "linux/arm64" - - tag: "9.0" - platforms: - - "linux/amd64" - - "linux/arm64" - - tag: "9" - platforms: - - "linux/amd64" - - "linux/arm64" - - tag: "8.4" - platforms: - - "linux/amd64" - - "linux/arm64" - - tag: "8.0" - platforms: - - "linux/amd64" - - "linux/arm64" - - tag: "8" - platforms: - - "linux/amd64" - - "linux/arm64" + # - name: "mysql" + # tags: + # - tag: "9.3" + # platforms: + # - "linux/amd64" + # - "linux/arm64" + # - tag: "9.0" + # platforms: + # - "linux/amd64" + # - "linux/arm64" + # - tag: "9" + # platforms: + # - "linux/amd64" + # - "linux/arm64" + # - tag: "8.4" + # platforms: + # - "linux/amd64" + # - "linux/arm64" + # - tag: "8.0" + # platforms: + # - "linux/amd64" + # - "linux/arm64" + # - tag: "8" + # platforms: + # - "linux/amd64" + # - "linux/arm64" # - name: "pgadmin4" # from: "dpage/pgadmin4" diff --git a/manual/postgis/3.5.3.tar.gz b/manual/postgis/3.5.3.tar.gz new file mode 100644 index 0000000..4dbee43 Binary files /dev/null and b/manual/postgis/3.5.3.tar.gz differ diff --git a/manual/postgis/Dockerfile.template b/manual/postgis/Dockerfile.template new file mode 100644 index 0000000..dd93bb6 --- /dev/null +++ b/manual/postgis/Dockerfile.template @@ -0,0 +1,87 @@ +# 基础镜像 +FROM quay.io/wandoubaba517/postgres:{$VERSION} + +# 切换为root用户执行安装操作 +USER root + +# 先安装wget(解决wget: not found问题) +RUN apt-get update && apt-get install -y wget && rm -rf /var/lib/apt/lists/* + +# 配置国内源并采用现代方式管理GPG密钥 +RUN echo "deb http://mirrors.aliyun.com/debian/ bookworm main non-free contrib" > /etc/apt/sources.list && \ + echo "deb-src http://mirrors.aliyun.com/debian/ bookworm main non-free contrib" >> /etc/apt/sources.list && \ + echo "deb http://mirrors.aliyun.com/debian-security/ bookworm-security main" >> /etc/apt/sources.list && \ + echo "deb-src http://mirrors.aliyun.com/debian-security/ bookworm-security main" >> /etc/apt/sources.list && \ + echo "deb http://mirrors.aliyun.com/debian/ bookworm-updates main non-free contrib" >> /etc/apt/sources.list && \ + echo "deb-src http://mirrors.aliyun.com/debian/ bookworm-updates main non-free contrib" >> /etc/apt/sources.list && \ + rm -rf /etc/apt/sources.list.d/* && \ + # 添加PostgreSQL国内镜像 + echo "deb http://mirrors.tuna.tsinghua.edu.cn/postgresql/repos/apt/ bookworm-pgdg main" > /etc/apt/sources.list.d/pgdg.list && \ + # 现代方式:将GPG密钥保存到trusted.gpg.d(替代apt-key add) + mkdir -p /etc/apt/trusted.gpg.d && \ + wget --no-check-certificate -O /etc/apt/trusted.gpg.d/postgresql.asc https://www.postgresql.org/media/keys/ACCC4CF8.asc && \ + chmod 644 /etc/apt/trusted.gpg.d/postgresql.asc + +# 安装编译工具和依赖库 +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + tar \ + gzip \ + postgresql-server-dev-{$VERSION} \ + libprotobuf-c-dev \ + protobuf-c-compiler \ + libgeos-dev \ + libproj-dev \ + libxml2-dev \ + libjson-c-dev \ + gdal-bin \ + libgdal-dev \ + libpcre3-dev \ + libsfcgal-dev \ + libgtk2.0-dev \ + libcunit1-dev \ + xsltproc \ + libtool \ + && rm -rf /var/lib/apt/lists/* + +# 下载并解压PostGIS 3.5.3源码(GitHub官方标签) +COPY 3.5.3.tar.gz / +RUN tar -xvzf 3.5.3.tar.gz \ + && mv postgis-3.5.3 postgis-src + +# 配置编译选项(基于postgres:和GitHub源码) +RUN cd postgis-src \ + && ./autogen.sh \ + && ./configure \ + --with-pgconfig=/usr/lib/postgresql/{$VERSION}/bin/pg_config \ + --with-geosconfig=/usr/bin/geos-config \ + --with-projdir=/usr \ + --with-gdalconfig=/usr/bin/gdal-config \ + --with-xml2config=/usr/bin/xml2-config \ + --with-jsondir=/usr \ + --with-pcredir=/usr \ + --with-sfcgal=/usr/bin/sfcgal-config \ + --with-raster \ + --with-topology \ + --without-phony-revision + +# 编译并安装PostGIS 3.5.3 +RUN cd postgis-src \ + && make -j$(nproc) \ + && make install \ + && make comments-install + +# 创建PostGIS初始化脚本 +RUN echo "CREATE EXTENSION IF NOT EXISTS postgis;" > /docker-entrypoint-initdb.d/init-postgis.sql \ + && echo "CREATE EXTENSION IF NOT EXISTS postgis_raster;" >> /docker-entrypoint-initdb.d/init-postgis.sql \ + && echo "CREATE EXTENSION IF NOT EXISTS postgis_topology;" >> /docker-entrypoint-initdb.d/init-postgis.sql \ + && chmod 644 /docker-entrypoint-initdb.d/init-postgis.sql + +# 清理编译残留(关键:不卸载tar,避免依赖冲突) +RUN rm -rf 3.5.3.tar.gz postgis-src \ + && apt-get purge -y build-essential wget \ + && apt-get autoremove -y \ + && rm -rf /var/lib/apt/lists/* + +# 切换回postgres用户 +USER postgres diff --git a/manual/postgis/README.md b/manual/postgis/README.md new file mode 100644 index 0000000..32d50ee --- /dev/null +++ b/manual/postgis/README.md @@ -0,0 +1,35 @@ +# 基于postgres构建postgis + +## postgis源码 + +```url +https://github.com/postgis/postgis/archive/refs/tags/3.5.3.tar.gz +``` + +## 构建命令 + +```sh +# 检查 buildx 是否可用 +docker buildx version +# 创建名为 "multiplatform-builder" 的构建器 +docker buildx create --name multiplatform-builder --use + +# 启动构建器(若需要) +docker buildx inspect --bootstrap + +# 构建并自动推送到仓库(需已登录) +docker buildx build \ + --platform linux/amd64,linux/arm64 \ + --tag quay.io/wandoubaba517/postgis:16-3.5 \ + --push \ + . +``` + +**关键参数说明** + +**--platform linux/amd64,linux/arm64**:指定构建两个平台的镜像(分别对应 x86_64 和 ARM64 架构)。 + +**--tag**:指定镜像的完整路径(包含 quay.io 仓库、用户名、镜像名和标签)。 + +**--push**:构建完成后自动推送到 quay.io 仓库(无需手动执行 docker push)。 + diff --git a/manual/postgis/build.sh b/manual/postgis/build.sh new file mode 100755 index 0000000..2cabb76 --- /dev/null +++ b/manual/postgis/build.sh @@ -0,0 +1,38 @@ +#!/bin/bash + +# 定义日志文件 +LOG_FILE="buildx.log" + +# 确保版本文件最后有换行符 +if [ -n "$(tail -c 1 versions)" ]; then + echo "" >> versions +fi + +# 读取版本文件并遍历每一行 +while IFS= read -r VERSION; do + # 跳过空行 + [ -z "$VERSION" ] && continue + + # 获取当前日期时间 + TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S") + + # 记录开始构建的日志 + echo "[$TIMESTAMP] 开始构建并上传 quay.io/wandoubaba517/postgis:${VERSION}-3.5 镜像" >> "$LOG_FILE" + + # 替换模板中的版本号并生成 Dockerfile + sed "s/{\$VERSION}/$VERSION/g" Dockerfile.template > "Dockerfile_${VERSION}" + + # 执行构建命令 + if docker buildx build --platform linux/amd64,linux/arm64 --push -t "quay.io/wandoubaba517/postgis:${VERSION}-3.5" -f "Dockerfile_${VERSION}" .; then + STATUS="success" + else + STATUS="failed" + fi + + # 删除生成的 Dockerfile + rm "Dockerfile_${VERSION}" + + # 记录完成构建的日志 + echo "[$TIMESTAMP] 完成构建并上传 quay.io/wandoubaba517/postgis:${VERSION}-3.5 镜像 $STATUS" >> "$LOG_FILE" + +done < versions \ No newline at end of file diff --git a/manual/postgis/versions b/manual/postgis/versions new file mode 100644 index 0000000..e142cd5 --- /dev/null +++ b/manual/postgis/versions @@ -0,0 +1,5 @@ +17 +16 +15 +14 +