我正在尝试安装和配置postgresql-client-11
在我的 ubuntu18:04
.我知道我们需要执行如下所示的一些额外步骤来做同样的事情(来源:https://www.itzgeek.com/how-tos/linux/ubuntu-how-tos/how-to-install-postgresql-10-on-ubuntu-18-04-lts.html)
wget -q https://www.postgresql.org/media/keys/ACCC4CF8.asc -O- | sudo apt-key add -
echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | sudo tee /etc/apt/sources.list.d/postgresql.list
sudo apt-get update
sudo apt-get install -y postgresql-client-11
我正在通过以下方式实现它
RUN apt-get update && apt-get dist-upgrade -y && apt-get install -y wget && apt-get install -y gnupg2
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | tee /etc/apt/sources.list.d/postgresql.list
RUN wget https://www.postgresql.org/media/keys/ACCC4CF8.asc
RUN apt-key add ACCC4CF8.asc
RUN apt-get update && apt-get dist-upgrade -y && DEBIAN_FRONTEND=noninteractive apt-get install -y nodejs && rm -rf /var/lib/apt/lists/*
我正在执行相同的命令
RUN apt-get update && apt-get dist-upgrade -y
两次。有没有办法优化以上,没有多余的命令 .
最佳答案
你可以稍微调整一下,但基本上你需要两个 RUN apt-get update && apt-get install
线。基本的依赖链是:
apt-get install
行取决于上游 PostgreSQL 存储库是否可用 apt-get install
从存储库直到您 apt-get update
来自它apt-get update
没有前面的行添加 sources.list
行并加载公钥 wget
就无法获取公钥和 gnupg
apt-get install
和前面的 apt-get update
没有特别需要运行
dist-upgrade
两次,我第一次会跳过它(也许第二次:Docker Hub ubuntu
图像定期更新)。您可以组合多个 apt-get install
命令一起使用,如果你有 rm
那里的子句你每次都需要运行它。您还可以考虑是否需要比 Ubuntu 软件包更新的客户端库;如果较旧的客户端库可以正常工作,您可以显着简化此操作。所以我可能会在某个地方结束:
# Install prerequisites to install prerequisites
RUN apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --assume-yes \
gnupg2 \
wget \
&& rm -rf /var/lib/apt/lists/*
# Configure upstream PostgreSQL repository
RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main" | tee /etc/apt/sources.list.d/postgresql.list \
&& wget https://www.postgresql.org/media/keys/ACCC4CF8.asc \
&& apt-key add ACCC4CF8.asc
# Actually install the packages we need
RUN apt-get update && \
&& DEBIAN_FRONTEND=noninteractive apt-get dist-upgrade -y \
&& DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends --assume-yes \
nodejs \
postgresql-client-11 \
&& rm -rf /var/lib/apt/lists/*
关于postgresql - 优化同一命令的多次执行 - Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60488053/