docker上快速部署Postgresql數據庫,可以參考docker-postgres的官方解決方案 https://hub.docker.com/_/postgres/
核心命令
docker run --name yourappname -e POSTGRES_PASSWORD=xxx -e POSTGRES_USER=xxx -v ./data:/var/lib/postgresql/data/pgdata -d -p xxxx:5432 postgres
命令執行步驟
第一步:在任意機子上建立一個鏡像,指定數據卷位置,並將其掛載到虛擬機上
第二步:按照你指定的端口訪問數據庫,做數據初始化。包括建表和插入初始數據。
第三步:備份數據卷。也就是上面的./data目錄。
第四步,將這個數據卷放到你的服務器上
第五步和第一步一樣。但是此時,你的數據卷里面已經有之前保存的內容了。
1、在linux中創建目錄
[root@bb software]# mkdir -p dev-postgres/data [root@bb software]# cd dev-postgres/data [root@bb dev-postgres]# pwd /software/dev-postgres/data [root@bb dev-postgres]#
2、命令
docker run --name my-postgres -e POSTGRES_PASSWORD=xxxxxx -e POSTGRES_USER=postgres -v /software/dev-postgres/data:/home/data/ -p 15555:5432 -d postgres
-it -d 這兩個參數一般同時使用,保證 container 以交互的方式在后台運行。 --rm 這個參數是指在 container 停止時自動將 container 刪除。 --name 你在使用 docker ps 命令時看到的 container 的名字。 -e POSTGRES_USER=dbuser 這個是設置 container 中的環境變量用的參數,指的是設計數據庫用戶為 dbuser 。之后登錄數據庫時就是使用這個用戶名。 -e POSTGRES_PASSWORD=password 同上,也是設置 container 中的環境變量,這個是設置你登錄數據庫的密碼,這里設置的密碼為"password"。 -e POSTGRES_DB=testdb 同上,初始化一個新的數據庫,其名字為 testdb。 -p 5432:5432 這個是將主機的端口與 container 暴露的端口進行映射。其格式為 -p 主機端口: container 端口。即 : 前為主機端口,后為 container 端口。 -v $HOME/docker/volumes/postgres:/var/lib/postgresql/data 掛載目錄。將容器中的 /var/lib/postgresql/data 目錄掛載至我們剛才新建的磁盤上的 $HOME/docker/volumes/postgres ,以便數據的持久化 postgres 為下載下來的 image 的名字。如果你的主機上沒有相應的 image ,則 docker 會自動從 dockerhub 活着你設置的源上下載相應的 image。
3、進入容器驗證
docker exec -ti my-postgres /bin/bash
root@b63cf7c32fb7:/bin# psql -U postgres psql (13.0 (Debian 13.0-1.pgdg100+1)) Type "help" for help. postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+------------+------------+----------------------- postgres | postgres | UTF8 | en_US.utf8 | en_US.utf8 | template0 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.utf8 | en_US.utf8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows) postgres=#
4、連接測試
完