歡迎光臨
每天分享高質量文章

技巧:使用Docker快速搭建開發環境資料庫服務

如果你剛剛開始軟體研發的職業生涯並且正在使用Mac,然後對於怎麼使用像MySQL/MariaDB、PostgreSQL、Microsoft SQL Server、Azure CosmosDB SQL又或者Oracle資料庫這樣的關係型資料庫感興趣的話,那麼這篇文章正適合你!
迄今為止,曾經每當我在我的膝上型電腦上跑Linux時,我都是直接在我的環境裡安裝對應的資料庫軟體。有時候我會面臨像依賴地獄(dependency hell),軟體衝突,本地庫缺失這樣的問題,然後最終不得不選擇將資料庫跑在相對隔離的Virtualbox虛擬機器裡。在如今的容器化世界裡,這已經是過去式了。
如果你真的想讓自己的程式碼人生變得更加輕鬆,那麼上手使用Docker,然後在容器裡啟動資料庫吧。所有都可以。
在容器裡執行RDBMS可能不太適用於生產環境,但是換成是開發環境/測試環境呢?這簡直是完美搭檔。
如果還沒有做的話,請先確保已經安裝了Homebrew和Cask —— 它們是Mac OS上的包管理器軟體。這不僅僅適用於這篇文章,未來安裝任何軟體你都用得上。

前置條件

你必須得先裝上Docker。而且雖說Kitematic是一個可選項,但是實際上我建議你最好裝上它。一旦在系統裡建立好了這些容器(start/stop/restart/delete),Kitematic會讓你管理容器變得更加輕鬆。
brew cask install docker kitematic
一旦裝上了Docker,你最好確保在Docker Store裡有一個賬號 —— 可以在這裡註冊[1]。對於某些資料庫軟體來說這一步是必需的。一旦有了自己的賬號,可以在UI登陸也可以直接執行docker login。

資料庫客戶端的命令列

要連線一臺資料庫的話,你將需要一個客戶端,而且最好是一款你能夠透過命令列/終端快速上手使用的。對於下麵每款資料庫而言,你將可以找到兩條指令:一條是透過Docker來安裝和啟動資料庫,另外一條則是透過命令列安裝和連線到該資料庫。
絕大多數的資料庫在其Docker映象裡只提供了命令列而沒有裝客戶端,不過我發現安裝這些客戶端真的相當有用,這樣一來你便可以輕鬆地連線到在其他任意地方執行的資料庫,比如雲端,或者在網路上的一些遠端伺服器。再者說,你也可以編寫指令碼來做一些自動化的工作。
這並不是說你不能在Docker裡透過命令列做這些事情……這純粹只是我的個人偏好罷了。
開工

目前,所有四個主流的資料庫軟體均有提供各自的Docker映象。 而且我正在密切參與Oracle資料庫的Docker映象的構建工作,和我的朋友Gerald Venzl一起嘗試優雅地將它們組裝到一起。 不過其他資料庫也提供了非常有用而且組裝好的Docker映象,我相信你會贊美它們的。
那麼,讓我們開始吧。
MySQL
你應該能註意到,在Docker Hub上有兩個MySQL映象:
  1. 官方的Oracle MySQL伺服器映象:https://hub.docker.com/r/mysql/mysql-server/

  2. 社群驅動的MySQL映象:https://hub.docker.com/_/mysql/

我通常傾向於使用一個產品的廠商官方提供的工具來消費該產品。當然你也完全可以去嘗試2,不過下麵列出的指令是針對Oracle出品的MySQL伺服器。
下載和啟動MySQL容器:
$ docker run --name=mysql1 -d -p 3306:3306 -e MYSQL_USER=dev -e MYSQL_PASSWORD=dev123 -e MYSQL_DATABASE=dev mysql/mysql-server
註意這裡用到了一些特殊的環境變數。可以檢視此映象對應的檔案[2]來瞭解更多資訊以及其他選項,比如怎麼用root連線。
安裝MySQL shell然後連到資料庫:
$ brew cask install mysql-shell
$ mysqlsh dev@localhost:3306
Microsoft SQL Server
微軟近年來一直在做一些很酷的事情。 他們不僅將這款產品用於Linux,而且現在還為它提供了相當不錯的Docker映象。
下載並啟動Microsoft SQL Server容器:
$ docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=SqlServer2017' -p 1433:1433 -d microsoft/mssql-server-linux:2017-latest
使用sqlcmd[3]安裝和連線 —— 瞭解更多詳情請轉到這裡[4]。
$ brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release 
$ brew install --no-sandbox mssql-tools
連線到SQL Server:
$ sqlcmd -S localhost,1433 -U SA -P SqlServer2017
PostgreSQL
此映象是由PostgreSQL Docker社群提供和支援的。基本上是Docker的員工以及參與PostgreSQL開發的小夥伴。我發現這個映象也非常的簡單易用。
下載和執行PostgreSQL:
$ docker run --name mypostgresdb -e POSTGRES_PASSWORD=psql123 -p 5432:5432 -d postgres
使用PSQL安裝和連線:
$ brew install psqlodbc
$ psql -h localhost -U postgres
Azure CosmosDB
CosmosDB[5]是一項由微軟Azure提供的有趣服務,它允許開發者使用不同的API連線到相同的資料儲存。舉個例子,你可以使用CosmosDB作為MongoDB或者Cassandra的一個替代品。它也提供一個SQL風格的API。你只要在CosmosDB上將一個之前已經開發好的現有應用指向這些資料庫裡面的其中一個,它便能正常工作(當然,要麼給它指定一個,要麼分配一個)。它還可以做到優雅地伸縮。甚至於Thomson Reuters也在使用它[6]。
再次重申一下,就我個人而言,使用CosmosDB最簡單的方式便是透過命令列。但是要試玩它的話,當然你首先得有一個Azure賬號。除此之外還得掏出幾百美刀用於頭30天的使用,微軟Azure也提供了許多免費服務(帶有明確的限制/配額),如果你在頭30天使用期間或之後激活了訂閱服務的話,一些服務會在開始使用的頭12個月內免費。
那麼,現在馬上轉到azure.microsoft.com/free然後建立一個賬號吧。
安裝Azure命令列。對於Mac OS X[7]來說,你只需要使用Homebrew安裝即可:
$ brew install azure-cli
對於Linux使用者,不妨檢視下檔案[8]裡包含的針對不同的包管理器和發行版對應的指令。
如果你真的想要試玩它的話,不妨跟著這個“使用命令列建立一個SQL API賬號[9]”的例子來做吧!
Oracle資料庫
在我就職於Oracle的期間,我帶領公司在GitHub上的建設工作,幫助團隊結構化他們的專案,並推出一些新的開源類庫,工具,資源,以及一些樣本集。不過,從一開始我就關註了一個特殊的專案:docker-images倉庫。而且我非常自豪能夠針對某些關鍵的Oracle產品的開發者體驗做出一些提升和改善,之所以能有這些成果都要感謝Docker以及來自於Monica Riccelli,Avi Miller,Gerald Venzl和其他許多工程師和產品經理的不懈努力。
在以前,出於開發目的安裝和執行Oracle資料庫一般是比較曲折費勁的,但是感謝Gerald和Docker的不懈努力,現在它已經變得足夠簡單了。
現在,任何人都可以訪問docker-images倉庫,下載Dockerfiles並且構建自己的映象用於商業產品,事實上Docker Store[10]和Oracle容器註冊中心[11]上的常見產品都有一些預先構建好的映象可用。
下麵我簡單列舉了一下從Docker Store下載和執行Oracle資料庫映象所需的幾個步驟。
在這一點上,我會假設你已經有一個Docker ID(帳戶)。 如果還沒有的話,不妨建立一個。
  • 去到Docker Store上的Oracle資料庫映象頁面

  • 點選 Proceed to Checkout(右邊的藍色按鈕)

  • 登陸你的Docker ID

  • 填寫表格,點選”我同意…”,然後轉到Get Content

  • 現在你應該可以訪問映象的檔案頁面,並且可以看到docker pull的相關指令

  • 如今你可以回到終端,繼續這篇文章往下讀。

在你的終端裡,登陸然後拉取Oracle DB映象:
$ docker login
$ docker pull store/oracle/database-enterprise:12.2.0.1
耐心等會。由於它是功能(幾乎)齊全的資料庫,映象接近3GB。這挺不錯的。
以Docker容器的方式執行Oracle資料庫:
$ docker run -d -it — name oracledb -p 1521:1521 store/oracle/database-enterprise:12.2.0.1
這可能需要一點時間,不過最終它會跑起來的。透過docker logs可以檢查進度。
在過去,你可能會使用SQL*PLus連線到Oracle資料庫。可是現在已經是21世紀,你也許會想要嘗試下SQLcl。這個新工具在終端上的互動性要比以前的SQL*Plus強很多。 所以我強烈建議你試用一下。 此外,它是由Oracle的朋友設計的,即krisrice和Jeff Smith。
要安裝SQLcl並連線到建立的相關映象裡的話,可以按照下麵這樣做:
  • 從Oracle下載ZIP檔案

  • 在終端裡解壓然後去到sqlcl/bin目錄(如果你想的話,不妨連結一個到/usr/local/bin)

連到資料庫:
$ ./sql sys/Oradoc_db1@//localhost/ORCLPDB1.localdomain as sysdba

小結

我希望這篇文章能夠幫助你輕鬆無礙地上手使用關係型資料庫。 因為不管你使用什麼程式語言,都必須儲存資料:-)
相關連結:
  1. https://store.docker.com/signup

  2. https://hub.docker.com/r/mysql/mysql-server/

  3. https://docs.microsoft.com/en-us/sql/tools/sqlcmd-utility

  4. https://docs.microsoft.com/en-ca/sql/linux/sql-server-linux-setup-tools#macos

  5. https://azure.microsoft.com/services/cosmos-db/

  6. https://customers.microsoft.com/en-us/story/thomson-reuters-media-telco-azure

  7. https://docs.microsoft.com/en-us/cli/azure/install-azure-cli-macos?view=azure-cli-latest

  8. https://docs.microsoft.com/en-us/cli/azure/install-azure-cli?view=azure-cli-latest

  9. https://docs.microsoft.com/en-us/azure/cosmos-db/scripts/create-database-account-collections-cli

  10. https://store.docker.com/search?q=oracle&source;=verified&type;=image

  11. https://container-registry.oracle.com/

原文連結:https://medium.com/@brunoborges/setting-up-database-servers-for-development-on-mac-os-x-using-docker-b7f2fad056f3
深入淺出Kubernetes及企業AI平臺落地實踐培訓

本次培訓內容包括:容器原理、Docker架構、工作原理、網路方案、儲存方案、Harbor、Kubernetes架構、元件、核心機制、外掛、核心模組、監控、日誌、二次開發、TensorFlow架構、工作原理、註意事項以及實踐經驗等,點選識別下方二維碼加微信好友瞭解具體培訓內容
4月20日正式上課,點選閱讀原文連結即可報名。
贊(0)

分享創造快樂