docker postgres


啟動一個 Postgres 實例

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d daocloud.io/postgres

這個鏡像會導出 Postgres 的 5432 端口, 因此通過標准的link機制就可以方便的訪問 Postgres 數據庫實例。 容器啟動時會通過initdb自動創建默認的 postgres用戶和數據庫。 數據庫postgres是可以被用戶,工具和第三方應用程序訪問的默認數據庫。

參考Postgres 文檔

從應用中連接數據庫

docker run --name some-app --link some-postgres:postgres -d application-that-uses-postgres

或者通過 psql

docker run -it --link some-postgres:postgres --rm postgres sh -c 'exec psql -h "$POSTGRES_PORT_5432_TCP_ADDR" -p "$POSTGRES_PORT_5432_TCP_PORT" -U postgres'

環境變量

Postgres 鏡像通過一系列環境變量來配置容器,雖然這些環境變量都不是必須的,但是它們會極大的方便您使用鏡像。

POSTGRES_PASSWORD

推薦您使用鏡像時指定這個環境變量,它用來設置超級用戶的密碼。 默認的超級用戶是由環境變量POSTGRES_USER指定的。 在開始的例子中,超級用戶密碼被設置為 "mysecretpassword"。

POSTGRES_USER

這個可選的環境變量是搭配POSTGRES_PASSWORD 一起來設置用戶名和密碼的,它會創建一個指定名稱的超級管理員和同名數據庫。 如果沒有設置這個環境變量,將使用默認值postgres

如何擴展這個鏡像

如果您希望在這個鏡像的派生鏡像中執行額外的初始化工作,可以在/docker-entrypoint-init.d目錄下增加*.sh腳本 (如果該目錄不存在則創建目錄),在初始化過程調用initdb創建默認的postgres用戶和數據庫后,它會執行該目錄下的所有*.sh腳本完成額外初始化操作再啟動服務。

如果您希望在初始化中執行 SQL 語句,強烈建議您使用 Postgres 單用戶模式

您還可以通過一個簡單的Dockerfile設置locale,下面這個例子將設置默認的localede_DE.utf8

FROM daocloud.io/postgres:9.4
RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8
ENV LANG de_DE.utf8

因為數據庫初始化僅發生在容器啟動時,因此您可以在數據庫創建前設置語言。

注意

如果容器啟動時沒有數據庫,Postgres 會為您創建一個默認數據庫。雖然這是 Postgres 正常的行為,但它意味着在這個階段數據庫是不接受連接請求的。 這個行為會對一些自動化工具產生影響,比如 docker-compose 會同時啟動多個容器。

支持的Docker版本

這個鏡像在 Docker 1.7.0 上提供最佳的官方支持,對於其他老版本的 Docker(1.0 之后)也能提供基本的兼容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM