最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker部署postgresql的方法實(shí)現(xiàn)

 更新時間:2025年01月10日 11:01:05   作者:Aderversa  
本文主要介紹了Docker部署postgresql的方法實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

postgresql數(shù)據(jù)庫在Docker中的鏡像的名稱為postgres,可以從DockerHub中pull下來,如果pull不下來那么很大概率是網(wǎng)絡(luò)問題導(dǎo)致的,這時候你可能需要在網(wǎng)上找一些能用的鏡像源,以成功拉取postgres鏡像。

有了postgres的鏡像之后,你就可以在本地的Docker創(chuàng)建一個postgres的容器并運(yùn)行。我們有兩種方式來創(chuàng)建容器:

  • 直接使用命令行來創(chuàng)建postgres的容器并運(yùn)行;
  • 使用docker-compose來創(chuàng)建postgres的容器并運(yùn)行;

這里先介紹使用命令行的方式來創(chuàng)建postgres容器的方式:

docker run -d \
--name postgres-exprdb \
-p 5432:5432 \
-e POSTGRES_PASSWORD=123456 \
-e POSTGRES_USER=aderversa \
-e POSTGRES_DB=testdb \
-v ~/postgresql/data:/var/lib/postgresql/data \
postgres
  • -e是用來設(shè)置postgres容器中環(huán)境變量的值的,有些特殊的環(huán)境變量將會影響到啟動后的postgresql的一些參數(shù),比如postgresql數(shù)據(jù)庫的密碼、用戶等等。具體一些環(huán)境變量的含義可以查看dockerhub中有關(guān)于環(huán)境變量的介紹,本文的最后也會介紹一些環(huán)境變量的含義。
  • -p將PostgreSQL的5432端口 暴露到宿主機(jī)的5432端口,方便我們在外部訪問容器內(nèi)的PostgreSQL服務(wù)。
  • -v將容器內(nèi)的/var/lib/postgresql/data文件夾掛載到宿主機(jī)的~/postgresql/data文件夾下,這樣數(shù)據(jù)庫中的數(shù)據(jù)就不會因?yàn)槲覀儎h除了容器而丟失。你需要自己定義好這個數(shù)據(jù)文件夾該掛載到自己主機(jī)的什么地方上,這里我給出的值僅做參考。
  • --name postgres-exprdb指定創(chuàng)建的PostgreSQL容器的名字。
  • -d表示該容器在后臺運(yùn)行,并打印創(chuàng)建容器的ID到控制臺。
  • postgres是我們所使用的鏡像。

運(yùn)行上述命令,使用docker ps查看容器狀態(tài):

CONTAINER ID   IMAGE      COMMAND                   CREATED         STATUS         PORTS                    NAMES
b1f5d4521cd0   postgres   "docker-entrypoint.s…"   8 seconds ago   Up 7 seconds   0.0.0.0:5432->5432/tcp   postgres-exprdb

可以看見,容器已經(jīng)在后臺運(yùn)行了。之后,我們可以使用別的什么工具去訪問已經(jīng)創(chuàng)建好的testdb數(shù)據(jù)庫,用定義好的特權(quán)用戶aderversa,以及指定好的密碼123456

IP已知,端口已知,用戶名和密碼都有了,那么你就可以用你能想象到的方式去連接這個PostgreSQL數(shù)據(jù)庫啦。

使用docker-compose來部署

相比于在命令行中寫冗長的命令,我更喜歡將容器的配置寫到docker-compose.yaml文件中,然后一行:

docker compose -f docker-compose.yaml -p package_name up -d
  • -f指定要要操作的文件。
  • -p指定項(xiàng)目的名稱。
  • up是創(chuàng)建并啟動容器的命令。
  • -d表示容器在后臺啟動。

比如,我編寫了一個docker-compose.yaml文件:

version: "3.8"

services:
  database_expr:
    image: postgres:latest
    container_name: postgres-expr
    restart: on-failure:3
    ports:
      - 5432:5432
    volumes:
      - ./db:/var/lib/postgresql/data
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=123456
      - POSTGRES_USER=aderversa
      - POSTGRES_DB=testdb

直接對其進(jìn)行操作就可以創(chuàng)建好容器并啟動,用戶不需要關(guān)心里面有什么配置。甚至如果你覺得使用docker compose的命令行來啟動不夠抽象,那么你可以將它編寫入shell腳本中,用戶直接運(yùn)行腳本,只要用戶安裝了Docker環(huán)境,就可以安裝PostgreSQL成功,他甚至不需要關(guān)心Docker命令應(yīng)該如何使用。

進(jìn)入postgres容器中執(zhí)行SQL

使用命令:

docker ps

查找出剛才創(chuàng)建的PostgreSQL容器的ID:

CONTAINER ID   IMAGE             COMMAND                   CREATED        STATUS                  PORTS                    NAMES
dcf5e3c0ff7f   postgres:latest   "docker-entrypoint.s…"   13 hours ago   Up 13 hours (healthy)   0.0.0.0:5432->5432/tcp   postgres-expr

獲得container_id = dcf5e3c0ff7f,接著我們使用以下命令進(jìn)入容器的bash中,方便在操作容器:

docker exec -it dcf5e3c0ff7f /bin/bash

注意,如果是在Windows下執(zhí)行這條命令的時候,使用Git Bash來執(zhí)行可能會因?yàn)榻K端的一些問題執(zhí)行失敗,此時需要更換一下執(zhí)行命令的終端,比如:PowerShell。

進(jìn)入到容器中是這個樣子的:

> docker exec -it dcf5e3c0ff7f /bin/bash
root@dcf5e3c0ff7f:/# 

第一行是在PowerShell中執(zhí)行的,而第二行則是PostgreSQL容器中運(yùn)行的bash進(jìn)程。

接著我們就可以使用:

psql [OPTION]... [DBNAME [USERNAME]]

這里介紹連接數(shù)據(jù)庫需要使用的OPTION選項(xiàng),具體的你可以使用psql --help來查看:

  • -h指定PostgreSQL數(shù)據(jù)庫的IP地址。
  • -p指定PostgreSQL數(shù)據(jù)庫的端口號。
  • -U指定登錄到數(shù)據(jù)庫的用戶名,不指定默認(rèn)就是root。
  • -w從不提示輸入密碼,字面意思,不需要輸入密碼來進(jìn)行訪問數(shù)據(jù)庫,默認(rèn)是不需要輸入密碼的。
  • -W強(qiáng)制密碼輸入。

按照這個用法,我們可以用以下兩種方式連接數(shù)據(jù)庫:

# 這里由于我們在創(chuàng)建容器的時候指定的特權(quán)用戶是aderversa,因此root被擠占掉了
# 用戶名對于我這里來說是必須設(shè)置的。
psql -p 127.0.0.1 -p 5432 -U aderversa testdb 

或者省事一點(diǎn),直接使用:

psql testdb aderversa

執(zhí)行成功后我們就能夠進(jìn)入psql的命令行:

psql (17.2 (Debian 17.2-1.pgdg120+1))
Type "help" for help.

testdb=#

psql的使用

這里我們并不知道如何使用這個命令行,它提示我們可以使用help來獲得幫助,那么就執(zhí)行一波help,得到了以下信息:

You are using psql, the command-line interface to PostgreSQL.
Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

這里它告訴我們:

  • \copyright,可以PostgreSQL DDMS的一些條款,里面大概是說:不管你出于何種目的,該軟件和其文檔都是允許你使用、復(fù)制、修改和發(fā)布的,并且是不需要任何費(fèi)用,不需要修改的同意…看起來是非常寬松的聲明,畢竟PostgreSQL遵循的是BSD協(xié)議。

  • \h顯示SQL命令,比如CREATE TABLE ALTER TABLE…。

  • \?顯示psql的命令,這里面還是非常多命令的,大多都是用來查看數(shù)據(jù)庫的狀態(tài)的,比如存在什么表、數(shù)據(jù)庫、視圖之類的。這里介紹一些常用的、簡單的命令:

    • \l,列出所有數(shù)據(jù)庫;
    • \c[onnect],連接到數(shù)據(jù)庫某個數(shù)據(jù)庫,如果先前有連接到某個數(shù)據(jù)庫那么這個操作就是更換連接的數(shù)據(jù)庫;
    • \dt,查看正在使用的數(shù)據(jù)庫中存在哪些表(注意,默認(rèn)創(chuàng)建的表似乎是不會列出來的);
  • \g執(zhí)行psql的上一個命令。

  • \q退出psql。

以上就是psql的基本用法了,你可以按照自己的在上面執(zhí)行SQL語句,比如:

create table user ( id int primary key );

注意SQL命令以;結(jié)尾就可以了。

創(chuàng)建完成后可以使用:

\dt

來查看你是否創(chuàng)建成功。

接下來就是你發(fā)揮創(chuàng)造力的時候了,自己嘗試著使用psql吧。

補(bǔ)充postgres容器的環(huán)境變量

  • POSTGRES_PASSWORD,必要的環(huán)境變量。這個環(huán)境變量將設(shè)置PostgreSQL容器中特權(quán)用戶的密碼。如果你要使用PostgreSQL鏡像,讓它以容器的形式的運(yùn)行,那么這個環(huán)境變量就必須要設(shè)置,它一定不能夠?yàn)榭栈蛘呶炊x。默認(rèn)的特權(quán)用戶將由POSTGRES_USER來定義。
  • POSTGRES_USER,可選的環(huán)境變量。設(shè)置PostgreSQL容器中的特權(quán)用戶名,需要與POSTGRES_PASSWORD一起使用,以此設(shè)置好特權(quán)用戶的名字和密碼。如果該環(huán)境變量未被指定,那么默認(rèn)的特權(quán)用戶名為postgres。
  • POSTGRES_DB,可選的環(huán)境變量。定義容器首次運(yùn)行創(chuàng)建的默認(rèn)數(shù)據(jù)庫的名字。如果該環(huán)境變量未被使用,那么該環(huán)境變量的值等于POSTGRES_USER的值。
  • POSTGRES_INITDB_ARGS,可選的環(huán)境變量。大概最終是以這種方式被利用:postgres initdb ${POSTGRES_INITDB_ARGS}。
  • POSTGRES_INITDB_WALDIR,可選的環(huán)境變量。定義PostgreSQL事務(wù)日志的位置。默認(rèn)的事務(wù)日志的位置是PostgreSQL主數(shù)據(jù)文件夾(PGDATA指定)下的一個子文件夾。
  • POSTGRES_HOST_AUTH_METHOD,可選的環(huán)境變量。(個人理解,似乎是與密碼摘要相關(guān)的東西,這一般不需要我們關(guān)注,如果有興趣可以去PostgreSQL: Documentation: 14: 21.5. Password Authentication了解一下)。
  • PGDATA,可選的環(huán)境變量。定義PostgreSQL主數(shù)據(jù)文件夾的位置,默認(rèn)是/var/lib/postgresql/data,如果有調(diào)整位置的需求那么可以按需求設(shè)置該變量的值。

到此這篇關(guān)于Docker部署postgresql的方法實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker部署postgresql內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • docker已啟動容器修改添加端口映射的兩種方法

    docker已啟動容器修改添加端口映射的兩種方法

    最近工作中遇到一個問題,docker容器啟動后怎么修改端口映射?通過查找相關(guān)資料解決了,這篇文章主要給大家介紹了關(guān)于docker已啟動容器修改添加端口映射的兩種方法,需要的朋友可以參考下
    2022-08-08
  • docker如何查詢指定名字的容器id

    docker如何查詢指定名字的容器id

    要查詢指定名字的Docker容器ID,可以使用命令 docker ps -a --filter "name=CONTAINER_NAME" -q,該命令將返回指定名稱的容器ID,如果存在多個相同名稱的容器,則返回所有這些容器的ID
    2025-03-03
  • 在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的完整步驟

    在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的完整步驟

    Dockerfile是Docker用來構(gòu)建鏡像的文本文件,包含自定義的指令和格式,這篇文章主要介紹了在Linux系統(tǒng)中使用Dockerfile創(chuàng)建Docker的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-11-11
  • Docker 下載鏡像慢的問題解決方法

    Docker 下載鏡像慢的問題解決方法

    這篇文章主要介紹了Docker 解決下載鏡像慢的問題的相關(guān)資料,這里提供了具體實(shí)現(xiàn)方法,需要的朋友可以參考下
    2016-11-11
  • Docker容器添加自定義MySQL配置文件

    Docker容器添加自定義MySQL配置文件

    本文介紹在Docker容器中通過綁定掛載為MySQL添加自定義配置文件,包括確定綁定掛載目錄、創(chuàng)建配置文件、添加配置項(xiàng)、重啟容器和驗(yàn)證配置,具有一定的參考價值,感興趣的可以了解一下
    2024-11-11
  • docker拉取鏡像錯誤missing signature key的解決方法

    docker拉取鏡像錯誤missing signature key的解決方法

    這篇文章主要介紹了docker拉取鏡像錯誤missing signature key的解決方法,當(dāng)我使用docker拉取一個特定的鏡像時,提示錯誤,文中給出了相關(guān)的解決方法,需要的朋友可以參考下
    2024-03-03
  • Docker端口沖突5步快速定位并解決容器端口占用難題

    Docker端口沖突5步快速定位并解決容器端口占用難題

    ocker容器端口沖突是部署中的常見問題,通常因指定主機(jī)端口被其他進(jìn)程或容器占用導(dǎo)致,這篇文章主要介紹了Docker端口沖突5步快速定位并解決容器端口占用難題的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-04-04
  • docker-compose部署nginx教程

    docker-compose部署nginx教程

    文章介紹了如何安裝和配置docker-compose,創(chuàng)建一個Nginx容器,并通過docker-compose.yml文件進(jìn)行配置,包括映射文件夾和自定義轉(zhuǎn)發(fā)配置,最后,提供了重啟和配置生效的腳本
    2025-01-01
  • docker常用命令總結(jié)之安裝、鏡像、容器基本操作

    docker常用命令總結(jié)之安裝、鏡像、容器基本操作

    這篇文章主要介紹了docker常用命令總結(jié)之安裝、鏡像、容器基本操作,需要的朋友可以參考下
    2017-05-05
  • docker部署Minio報(bào)錯:Fatal glibc error:CPU does not support x86-64-v2問題

    docker部署Minio報(bào)錯:Fatal glibc error:CPU does&nb

    在CentOS 7上使用Docker部署Minio時遇到CPU不支持問題,通過研究確定是版本太新,由于項(xiàng)目經(jīng)費(fèi)有限,決定降級到CentOS 7,步驟包括拉取Minio鏡像、創(chuàng)建目錄、開放端口和運(yùn)行
    2024-12-12

最新評論

富源县| 彭山县| 大悟县| 柏乡县| 峨眉山市| 中卫市| 东乌| 新干县| 荥阳市| 博爱县| 高邮市| 镇平县| 阿克苏市| 中卫市| 定边县| 津南区| 南宫市| 佛坪县| 怀宁县| 南充市| 宁国市| 新民市| 水富县| 边坝县| 子长县| 秦皇岛市| 明溪县| 双牌县| 临朐县| 达拉特旗| 旬阳县| 宁乡县| 西畴县| 邢台县| 济阳县| 莒南县| 洞头县| 天峨县| 康保县| 夏津县| 余江县|