Docker 部署 PostgreSQL數(shù)據(jù)庫(kù)的兩種方式
1. 使用 docker命令部署
部署命令:
docker run --name dbname-postgres \ -e POSTGRES_USER=postgres \ -e POSTGRES_PASSWORD=postgrespwd \ -e POSTGRES_DB=db-default \ -p 5432:5432 \ -v /path/to/data:/var/lib/postgresql/data \ --restart always \ -d postgres:latest
參數(shù)說(shuō)明:
POSTGRES_USER: 設(shè)置數(shù)據(jù)庫(kù)用戶名(默認(rèn)為 postgres)POSTGRES_PASSWORD: 設(shè)置數(shù)據(jù)庫(kù)密碼POSTGRES_DB: 設(shè)置默認(rèn)數(shù)據(jù)庫(kù)(默認(rèn)為 POSTGRES_USER 的值)-p 5432:5432: 將容器端口映射到主機(jī)端口,如果將主機(jī)端口改為5000,則為5000:5432-v /path/to/data:/var/lib/postgresql/data: 數(shù)據(jù)持久化到主機(jī)目錄postgres:latest: 指定 PostgreSQL 版本為最新版本postgres:13: 指定 PostgreSQL 版本為 13
2. 使用 Docker Compose 部署
創(chuàng)建 docker-compose.yml 文件:
# 指定 Docker Compose 文件格式版本
version: '3.8'
# 定義服務(wù)列表
services:
# 定義 PostgreSQL 服務(wù)
postgres:
# 使用 PostgreSQL 官方鏡像,版本13
image: postgres:latest
# 指定容器名稱(如果不指定,Docker 會(huì)自動(dòng)生成)
container_name: db-postgres
# 環(huán)境變量配置
environment:
# 設(shè)置 PostgreSQL 超級(jí)用戶(默認(rèn)為 postgres)
POSTGRES_USER: postgres
# 設(shè)置 PostgreSQL 超級(jí)用戶密碼(必須設(shè)置)
POSTGRES_PASSWORD: postgrespwd
# 設(shè)置默認(rèn)創(chuàng)建的數(shù)據(jù)庫(kù)名稱(默認(rèn)為 POSTGRES_USER 的值)
POSTGRES_DB: db-default
# 端口映射配置(主機(jī)端口:容器端口)
ports:
- "5432:5432" # 將容器內(nèi)部的5432端口映射到主機(jī)的5432端口
# 數(shù)據(jù)卷配置(持久化數(shù)據(jù))
volumes:
# 使用命名卷 postgres_data 掛載到容器中的數(shù)據(jù)庫(kù)數(shù)據(jù)目錄
- postgres_data:/var/lib/postgresql/data
# 容器重啟策略
restart: always # 總是自動(dòng)重啟容器,無(wú)論退出狀態(tài)如何
# 定義卷列表(用于數(shù)據(jù)持久化)
volumes:
# 定義一個(gè)名為 postgres_data 的命名卷
# Docker 會(huì)自動(dòng)管理這個(gè)卷,確保數(shù)據(jù)庫(kù)數(shù)據(jù)持久化
# 即使容器被刪除,數(shù)據(jù)也不會(huì)丟失
postgres_data:然后運(yùn)行:
docker-compose up -d
3. 連接 PostgreSQL
容器運(yùn)行后,可以通過(guò)以下方式連接:
- 從主機(jī)連接:
psql -h localhost -U myuser -d mydatabase
- 進(jìn)入容器內(nèi)部連接:
docker exec -it my-postgres psql -U myuser -d mydatabase
4. 常用管理命令
- 查看運(yùn)行中的容器:
docker ps - 查看日志:
docker logs my-postgres - 停止容器:
docker stop my-postgres - 啟動(dòng)容器:
docker start my-postgres - 刪除容器:
docker rm my-postgres(需要先停止)
5. 高級(jí)配置
如果需要自定義 PostgreSQL 配置,可以:
- 創(chuàng)建自定義配置文件
postgresql.conf - 掛載到容器中:
-v /path/to/postgresql.conf:/etc/postgresql/postgresql.conf
- 啟動(dòng)時(shí)指定配置文件:
-e POSTGRES_CONFIG_FILE=/etc/postgresql/postgresql.conf
注意事項(xiàng)
- 數(shù)據(jù)持久化:務(wù)必使用卷或綁定掛載來(lái)持久化數(shù)據(jù),否則容器刪除后數(shù)據(jù)會(huì)丟失
- 安全性:不要使用弱密碼,生產(chǎn)環(huán)境應(yīng)考慮更復(fù)雜的安全配置
- 性能:對(duì)于生產(chǎn)環(huán)境,可能需要調(diào)整共享緩沖區(qū)等參數(shù)
- 備份:定期備份數(shù)據(jù)庫(kù)數(shù)據(jù)
到此這篇關(guān)于Docker 部署 PostgreSQL 指南的文章就介紹到這了,更多相關(guān)Docker 部署 PostgreSQL內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker容器/bin/bash?start.sh無(wú)法找到not?found問(wèn)題解決
最近在學(xué)習(xí)聯(lián)系中遇到一個(gè)問(wèn)題,百度后發(fā)現(xiàn)這個(gè)需求還是挺常見(jiàn)的,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器/bin/bash?start.sh無(wú)法找到not?found問(wèn)題的解決方法,需要的朋友可以參考下2022-08-08
docker內(nèi)部容器之間的端口訪問(wèn)實(shí)現(xiàn)方法
alpine-client?與?alpine-server?兩容器,前者訪問(wèn)后者監(jiān)聽之端口,以此探析?Docker?內(nèi)部容器間端口訪問(wèn)機(jī)制,這篇文章主要介紹了如何實(shí)現(xiàn)docker內(nèi)部容器之間的端口訪問(wèn),需要的朋友可以參考下2024-04-04
在IntelliJ IDEA中使用Docker的開發(fā)指南
這篇文章主要給大家介紹了在IntelliJ IDEA中使用Docker開發(fā)指南,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)我們的使用Docker有一定的幫助,需要的朋友可以參考下2023-09-09
docker安裝prometheus和grafana的詳細(xì)過(guò)程
prometheus通過(guò)各種Exporter采集到監(jiān)控?cái)?shù)據(jù),然后存儲(chǔ)進(jìn)prometheus中,以供查詢展示,這篇文章主要介紹了docker安裝prometheus和grafana,需要的朋友可以參考下2023-02-02
Docker搭建ELK日志系統(tǒng),并通過(guò)Kibana查看日志方式
這篇文章主要介紹了Docker搭建ELK日志系統(tǒng),并通過(guò)Kibana查看日志方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05

