首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker Postgres数据主机卷映射

Docker Postgres数据主机卷映射
EN

Stack Overflow用户
提问于 2022-09-23 19:08:23
回答 1查看 67关注 0票数 -1

我正在尝试对PostgreSQL服务器进行对接-容器化,这个容器还会有许多其他的应用程序。需要的是,PostgreSQL服务器数据应该映射到主机卷,这样当容器停止时,我们就不会丢失数据。另外,下次启动容器时,可以再次映射同一个目录,postgres可以使用旧数据。下面是炮台。注意,我在主机上使用的是ubuntu22.04。

代码语言:javascript
复制
FROM ubuntu:22.04
ENV DEBIAN_FRONTEND noninteractive
RUN apt install -y postgresql
ENTRYPOINT ["tail", "-f", "/dev/null"]

Docker映像是使用命令生成的

代码语言:javascript
复制
docker build -t pg_test .

,并使用命令运行容器。

代码语言:javascript
复制
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容器中的目录。

一旦码头容器启动,我将使用命令输入停靠容器。

代码语言:javascript
复制
docker exec -it test bash

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

我知道我这样做是错误的,但我找不到绕过它的方法。如果有谁能帮我用正确的方式做这件事吗?

任何帮助都是值得感激的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-23 19:20:01

您应该使用postgres映像,它将在启动容器时为您设置db,您可以在https://hub.docker.com/_/postgres上找到说明。

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73832004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档