簡體   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