在Docker上玩轉PostgreSQL -- Mac篇

jopen 8年前發布 | 20K 次閱讀 Docker MacOS PostgreSQL 數據庫服務器

今天給大家帶來的話題是:*在Docker上玩轉PostgreSQL* (標題看到是不是有點小激動呢,這么高大尚的容器技術,讓"云"變得更容易)

以下是華麗的正文分隔線

google一下發現 Docker官方PostgreSQL鏡像 已經介紹了怎么制作PostgreSQL鏡像教程。

今天的分享是面向Mac用戶(悄悄的告訴你,小編俺也是第一次在Mac上玩起PostgreSQL On Docker)。

戰前準備

大家以熱烈的掌聲來歡迎神器: Docker Toolbox 登場!

</div>

  1. 簡述

    Docker Toolbox 的誕生是廣大 MacWindows 用戶玩轉Docker的福音。

    再也不用再折騰 boot2docker 各種墻的 問題 ,俺是不會告訴你:運行boot2docker init會有一種讓你砸掉鍵盤的沖動,好吧,小編還真砸掉一塊了,-_-!!。

    </div> </li>

  2. 安裝Homebrew

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    </li>

  3. 安裝Cask

    brew install caskroom/cask/brew-cask
    </li>

  4. 安裝Docker Toolbox

    brew cask install dockertoolbox
    </li> </ol>

    運行Docker Quickstart Terminal.app

    bash --login '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'

    出現以下提示,說明Docker已經就緒

    </div>

                            ##         .

                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
    
    
    

    docker is configured to use the default machine with IP ... For help getting started, check out the docs at https://docs.docker.com</pre>

    否則會提示

    </div>

    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

    動手制作PostgreSQL Docker鏡像

    1. 編寫Dockerfile

      這里 有介紹Dockerfile的最佳實踐以及 官方 有詳細的參考指南,請大家各自閱讀。

      </div>

      翠花,上PG Dockerfile

      $ cd ~;mkdir mypostgresql;cd mypostgresql
      $ cat Dockerfile

      FROM ubuntu:16.04

      RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys B97B0AFCAA1A47F044F244A07FCC7D46ACCC4CF8

      RUN echo "deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main" > /etc/apt/sources.list.d/pgdg.list RUN apt-get update && apt-get -y -q install python-software-properties software-properties-common \ && apt-get -y -q install postgresql-9.4 postgresql-client-9.4 postgresql-contrib-9.4

      USER postgres RUN /etc/init.d/postgresql start \ && psql --command "CREATE USER pger WITH SUPERUSER PASSWORD 'pger';" \ && createdb -O pger pgerdb

      USER root RUN echo "host all all 0.0.0.0/0 md5" >> /etc/postgresql/9.4/main/pg_hba.conf RUN echo "listen_addresses='*'" >> /etc/postgresql/9.4/main/postgresql.conf

      EXPOSE 5432

      RUN mkdir -p /var/run/postgresql && chown -R postgres /var/run/postgresql VOLUME ["/etc/postgresql", "/var/log/postgresql", "/var/lib/postgresql"]

      USER postgres CMD ["/usr/lib/postgresql/9.4/bin/postgres", "-D", "/var/lib/postgresql/9.4/main", "-c", "config_file=/etc/postgresql/9.4/main/postgresql.conf"]</pre></li>

    2. 制作Docker鏡像

      docker build --rm=true -t mypostgresql:9.4 .
      </li>

    3. 運行PostgreSQL On Docker

      docker run -i -t -p 5432:5432 mypostgresql:9.4
      </li>

    4. 測試

      psql -h localhost -p 5432 -U pger -W pgerdb

      結果顯示如下,說明鏡像制作成功了,細心的讀者可能會發現里面已經多了一個名叫pgerdb的數據庫

      </div>

      Password for user pger:
      psql (9.4.2, server 9.4.5)
      SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
      Type "help" for help.

      pgerdb=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+-----------+---------+-------+----------------------- pgerdb | pger | SQL_ASCII | C | C | postgres | postgres | SQL_ASCII | C | C | template0 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | SQL_ASCII | C | C | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)

      pgerdb=#</pre></li> </ol>

      搞定,以上就是今天要分享的PostgreSQL On Docker的話題,希望對大家有用,祝玩得開心~~

      </div> </div>

      來自: http://yq.aliyun.com/articles/2307

      </code></code></code></code></code></code></code></code></code></code></code>

       本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
       轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
       本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!