为什么postgresql docker合成卷设置必须是/var/lib/postgresql/data?

0h4hbjxa  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(2)|浏览(215)

我是初学者docker用户。我在Mac OS中安装了docker和postgresql。为什么大多数文档都提到目录/var/lib/postgresql/data作为卷设置???因为在我的本地目录中,不存在/var/lib/postgresql。。这是默认选项吗?或者我错过了什么?

hkmswyz6

hkmswyz61#

是的,正确,/var/lib/postgresql在您的本地计算机上不存在,但在创建的container中存在。volumes参数用于将本地数据与container数据关联,以便在container崩溃时保留数据
例如:

volumes:
  - ./../database/main:/var/lib/postgresql/data

上面我们将本地目录从左侧链接到容器目录

hs1rzwqc

hs1rzwqc2#

如果您正在使用Docker Hub中的官方PostgreSQL图像,则可以检查其Dockerfile的内容。例如,以下是负责数据目录的postgres:15图像片段:

ENV PGDATA /var/lib/postgresql/data
# this 777 will be replaced by 700 at runtime (allows semi-arbitrary "--user" values)
RUN mkdir -p "$PGDATA" && chown -R postgres:postgres "$PGDATA" && chmod 777 "$PGDATA"
VOLUME /var/lib/postgresql/data

正如您所看到的,Postgres被配置为在该目录中保存数据。即使容器被停止和删除,也要保存数据,创建卷。Volumes的生命周期独立于容器,这使它们能够“生存”。

相关问题