天天看點

mac電腦上docker中安裝postgresql

前言:

docker真是一個好東西,是碼農開發調試的神器,以前還要自己配置開發、測試環境,安裝過程繁瑣,容易出錯,耗時很多,用docker基本能夠在5分鐘搞定,而且一次配置,每個環境都能夠無差别部署,省時省力。
最近公司的項目基本設計要求資料庫每張表的每行記錄的大小需要突破65535位元組,經過研究,mysql(mysql限制每個表的最多存儲4096列,并且每一行資料的大小不能超過65535位元組)被pass 掉,選用postgresql,完美滿足這個技術需求。           

現在将在mac電腦上使用docker安裝postgresql詳細的每一步記錄下來:

1.mac上docker環境安裝:
(1)macOS 我們可以使用 Homebrew 來安裝 Docker。Homebrew 的 Cask 已經支援 Docker for Mac,是以可以很友善的使用 Homebrew Cask 來進行安裝:
     brew cask install docker
(2)如果需要手動下載下傳,請點選以下連結下載下傳 Stable 或 Edge 版本的 Docker for Mac。
     Stable版本下載下傳位址:https://download.docker.com/mac/stable/Docker.dmg
     Edge版本下載下傳位址:https://download.docker.com/mac/edge/Docker.dmg
     dmg安裝過程基本是傻瓜式的,就不說了。
 安裝成功,docker啟動後,在終端中執行 :
     1.$ docker --version
     Docker version 17.09.1-ce, build 19e2cf6
 檢視docker版本。
 在終端中執行:
      ~ docker info
      Containers: 6
       Running: 1
       Paused: 0
       Stopped: 5
      Images: 4
      Server Version: 18.09.2
      Storage Driver: overlay2
       Backing Filesystem: extfs
       Supports d_type: true
       Native Overlay Diff: true
      Logging Driver: json-file
      Cgroup Driver: cgroupfs
      ......
   檢視docker資訊。
  如果覺得還有docker安裝問題,請參考:https://www.runoob.com/docker/macos-docker-install.html
  
  下面記錄在docker上安裝postgresql過程:
  1.安裝PostgreSQL:
      docker pull postgres:9.4
  其中的9.4是pg資料庫的版本号,因為公司其餘項目使用的pg9.4版本,為了統一相容,是以我這裡也使用的是9.4版本,可以根據個人喜好,或者項目需求選擇響應的版本。
  2.docker的容器預設情況下隻能由本地主機通路,即A主機上的容器不能被B主機通路,是以要做端口映射:
      docker run --name postgres1 -e POSTGRES_PASSWORD=postgres -p 54321:5432 -d postgres:9.4 
  參數解釋:
      (1)run,建立并運作一個容器; 
      (2)--name,指定建立的容器的名字,這裡是postgres1;
      (3)-e POSTGRES_PASSWORD=postgres,設定環境變量,指定資料庫的登入密碼為postgres(pg資料庫預設使用者postgres的密碼為postgres); 
      (4)-p 54321:5432,端口映射将容器的5432端口映射到本機實體機器的54321端口;
      (5)-d postgres:9.4,指定使用postgres:9.4作為鏡像;
 3.驗證結果
    在終端中運作:
      docker ps -a
    結果:
        ~ docker ps -a
      CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                      PORTS                     NAMES
      fa68e40d3e8f        postgres:9.4                   "docker-entrypoint.s…"   4 hours ago         Up 4 hours                  0.0.0.0:54321->5432/tcp   postgres1
      411fc1432207        kalilinux/kali-linux-docker    "/bin/bash"              5 months ago        Exited (127) 5 months ago                             vigorous_tereshkova
      a62d23d32a6c        encircles/easyswoole3:latest   "php /var/www/code/e…"   6 months ago        Exited (0) 6 months ago                               containerName
      faa85aa15633        hello-world                    "/hello"                 7 months ago        Exited (0) 7 months ago                               quirky_austin
      590ecd9e36bf        hello-world                    "/hello"                 7 months ago        Exited (0) 7 months ago                               awesome_liskov
      f7e5cd7f9503        hello-world                    "/hello"                 15 months ago       Exited (0) 15 months ago                              heuristic_easley
        ~
      
 4.連接配接資料庫:
   psql連結資料庫:
      psql -U postgres -h 127.0.0.1 -p 54321
   注意:
    postgres鏡像預設的使用者名為postgres, 我們設定的postgres使用者的密碼也是postgres。
 5.實用用戶端:
    pgAdmin4 、navicat for postgresql 等用戶端操作docker 中的pg資料庫更友善,pgAdmin4 、navicat for postgresql 在mac上的具體安裝過程,這裡就不啰嗦了,傻瓜式安裝。