繁体   English   中英

Docker Postgres数据主机卷映射

[英]Docker Postgres data host volume mapping

我正在尝试 docker-containerize PostgreSQL 服务器,这个容器也将有许多其他应用程序。 需要的是,PostgreSQL 服务器数据应该映射到主机卷,这样当容器停止时,我们不会丢失数据。 另外,下次我们启动容器时,可以再次映射相同的目录,并且 postgres 可以使用旧数据。 下面是 DOCKERFILE。 请注意,我在主机上使用 ubuntu 22.04。

FROM ubuntu:22.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt install -y postgresql
ENTRYPOINT ["tail", "-f", "/dev/null"]

Docker 镜像是使用命令构建的

docker build -t pg_test .

并且容器使用命令运行

docker run --name test -v /home/me/data:/var/lib/postgresql/14/main pg_test

'/home/me/data' 是我想要 map postgres 服务器数据的空主机目录。 '/var/lib/postgresql/14/main' 是 docker 容器内的目录,postgres 应该在其中存储数据。

一旦 docker 容器启动,我使用命令进入 docker 容器

docker exec -it test bash

一旦我在里面,我正在尝试启动 PostgreSQL 服务。 但是 PostgreSQL 无法启动,因为 '/var/lib/postgresql/14/main' 目录中没有数据。 我了解,由于我已将空主机目录映射到“/var/lib/postgresql/14/main”目录,因此 postgres 没有启动所需的文件。

我知道我做错了,但我找不到解决方法。 如果有的话,谁能帮助我以正确的方式做到这一点?

任何帮助都是不言而喻的。

您应该使用 postgres docker 映像,它会在您启动容器时为您设置数据库,您可以在https://hub.Z05B6053C41A2130AFD6FC3B158BDA4EZ6上找到说明

如果必须使用自定义映像,则需要自己初始化数据库,通常通过运行initdb或系统提供的任何方式。

但实际上您应该使用适当的 docker 映像,如果您需要更多服务,您可以在自己的容器中启动它们并将它们连接到 postgres 之一

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM