當程式完成之後要進行程式的測試,當有相依的服務需要建構,例如MySQL或是redis,
一種方式是直接將這些服務建立在本機,不過這種方式會讓本機建立越來越多服務,
加上之後如果要測試其他服務時,已經有資料的資料庫有時會不方便,
這時就可以使用docker來個別建立所需服務,也可以建立出乾淨的資料庫。
要透過docker建立資料庫之前,當然是要先把docker裝起來,這邊以mac為範例來說明
官網有提供桌面版的下載檔,下載完之後點擊安裝,結束後將docker拖到Applications目錄即可,
接下來可以透過下面指令
docker -v
有正確顯示docker版本,那就是安裝成功了。
在docker內,可以透過官方或自己準備映像檔(image)來建立容器(Container),可以將容器看成一個擁有最底線功能,小型的linux,包含著指定的服務,由於沒有多餘的功能,所以大部分容器檔案大小都不大。
基本上MySQL或redis等常用資料庫,官方都有提供映像檔,所以不用自己準備。
建立容器的方式只需要透過一個指令即可:
docker run --name redis-lab -d redis
沒特別指令版本的話就會使用最新的版本,如果要指令版本則像下面範例這樣:
docker run --name redis-lab -d redis:5.7
這樣建立出來的容器就會是redis 5.7版(如果有的話),方便在特定版本測試。
但是這樣建立出來的容器無法被外部的服務打到,因此必須設定port讓內部的port暴露出來,像下面範例一樣:
docker run --name redis-lab -p 6379:6379 -d redis
這樣就可以將容器內部的port對應到本機的6379 port,就可以將設定檔的redis網址設定為127.0.0.1:6379,
同理,如果6379已經被使用了,也可以設定別的port:
docker run --name redis-lab -p 8080:6379 -d redis
這樣就是將容器的6379開到本機的8080port,透過這種方式就可以將程式需要的服務以docker架起來了。