我正在尝试对PostgreSQL服务器进行对接-容器化,这个容器还会有许多其他的应用程序。需要的是,PostgreSQL服务器数据应该映射到主机卷,这样当容器停止时,我们就不会丢失数据。另外,下次启动容器时,可以再次映射同一个目录,postgres可以使用旧数据。下面是炮台。注意,我在主机上使用的是ubuntu22.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‘是要映射postgres服务器数据的空主机目录。'/var/lib/postgresql/14/main‘是用于存储数据的postgres容器中的目录。
一旦码头容器启动,我将使用命令输入停靠容器。
docker exec -it test bash一旦我在里面,我就开始启动PostgreSQL服务。但是PostgreSQL无法启动,因为'/var/lib/postgresql/14/main‘目录中没有数据。我了解到,由于我已经将空主机目录映射到'/var/lib/postgresql/14/main‘目录,postgres没有启动所需的文件。
我知道我这样做是错误的,但我找不到绕过它的方法。如果有谁能帮我用正确的方式做这件事吗?
任何帮助都是值得感激的。
发布于 2022-09-23 19:20:01
您应该使用postgres映像,它将在启动容器时为您设置db,您可以在https://hub.docker.com/_/postgres上找到说明。
如果必须使用自定义映像,则需要自己初始化数据库,通常是运行initdb或系统提供的任何内容。
但是实际上,您应该使用适当的码头映像,如果您需要更多的服务,您可以在它们自己的容器中启动它们,并将它们连接到postgres one
https://stackoverflow.com/questions/73832004
复制相似问题