我尝试在我的 docker 容器(来自 alpine3.6)中运行命令来安装我在网上看到的 pg_dumpall:
apk update && apk upgrade
接着
apk add --no-cache postgresql-client-common
最后
apk add --no-cache postgresql-client
只有我尝试的两个安装中的最后一个有效(没有通用的那个),但我仍然没有pg_dump或pg_dumpall在我的二进制文件中。
我尝试在我的 docker 容器(来自 alpine3.6)中运行命令来安装我在网上看到的 pg_dumpall:
apk update && apk upgrade
接着
apk add --no-cache postgresql-client-common
最后
apk add --no-cache postgresql-client
只有我尝试的两个安装中的最后一个有效(没有通用的那个),但我仍然没有pg_dump或pg_dumpall在我的二进制文件中。
尝试
apk add postgresql-client
您可以在此链接中查看此软件包的所有包含二进制文件。这个包有一个 pg_dumpall
每个 alpine 版本都有不同的 postgresql-client。对于我自己,我写了这些逻辑:
ARG PSQL_VERSION=0
RUN if [ "$PSQL_VERSION" = "13" ]; then \
echo "http://dl-cdn.alpinelinux.org/alpine/v3.14/main" >> /etc/apk/repositories; \
elif [ "$PSQL_VERSION" = "12" ]; then \
echo "http://dl-cdn.alpinelinux.org/alpine/v3.12/main" >> /etc/apk/repositories; \
elif [ "$PSQL_VERSION" = "11" ]; then \
echo "http://dl-cdn.alpinelinux.org/alpine/v3.10/main" >> /etc/apk/repositories; \
elif [ "$PSQL_VERSION" = "10" ]; then \
echo "http://dl-cdn.alpinelinux.org/alpine/v3.8/main" >> /etc/apk/repositories; \
fi
RUN apk update
RUN apk --no-cache add postgresql-client
现在您可以传递所需的客户端版本:
docker build -t backuper --build-arg PSQL_VERSION=12 .