發表文章

目前顯示的是有「Docker」標籤的文章

如何使用 Docker 切換不同的 MongoDB

圖片
在開發前端的時候,常常會碰到想要回到 migration 之前的 MongoDB 資料結構來除錯,如果只使用本地安裝的 MongoDB,操作上會很麻煩,所以這篇文章會說明如何在本機不安裝 MongoDB 的環境下,使用 Docker 準備多份 MongoDB 資料庫。 請確認電腦有安裝 Docker,先準備好要使用的 MongoDB 資料庫備份檔案,大概會是長這樣: 存放的路徑這裡暫定為 ~/Downloads/20170622/foo/... 。 打開 Terminal,下載 MongoDB(這裡以 2.6 版作為示範)的 Docker image: $ docker pull mongo:2.6 然後開啟一個新的 MongoDB Docker container,container 名字可以透過 --name 自訂: $ docker run --detach --name mongo_foo_20170622 --publish 27017:27017 mongo:2.6 使用 docker inspect 取得 container 的 IP,後面會用到: $ docker inspect mongo_foo_20170622 | grep IPAddress 前往剛才存放備份資料庫的位置: $ cd ~/Downloads 開啟並進入一個暫時性質的 Docker container,用途為 restore 資料庫到 mongo_foo_20170622 的 container: $ docker run --interactive --tty --rm --volume $PWD:/tmp mongo:2.6 bash 因為 ~/Downloads 被 volume 在 /tmp 底下,所以可以根據對應的路徑前往該資料庫存放的資料夾位置: $ cd /tmp 使用 mongorestore 恢復備份資料庫到 mongo_foo_20170622 ,IP 記得使用上面 docker inspect 查到的 IP: $ mongorestore --host 172.17.0.2 --db foo 20170622/foo 如果順利 restore 完成之後,就可以離開,它會自動刪除這個一次性的 conta...

DevOps:持續整合&持續交付(Docker、CircleCI、AWS)

圖片
這篇文章將一步一步介紹如何使用 Docker、GitHub Flow、CircleCI、AWS Elastic Beanstalk 與 Slack 來完成 持續整合 與 持續交付 的開發流程。 前言 什麼是持續整合&持續交付? 持續整合&持續交付(Continuous Integration & Continous Delivery),簡稱 CI & CD,具體介紹可以參考「 山姆鍋對持續整合、持續部署、持續交付的定義 」這篇文章。 簡單來說就是盡量減少手動人力,將一些日常工作交給自動化工具。例如:環境建置、單元測試、日誌紀錄、產品部署。 我使用了哪些工具? Git - 版本管理 GitHub - 程式碼託管、審查 CircleCI - 自動化建置、測試、部署 Docker - 可攜式、輕量級的執行環境 AWS Elastic Beanstalk - 雲端平台 Slack - 團隊溝通、日誌、通知 看完這篇你可以學到什麼? 瞭解 GiHub 的工作流程( GitHub Flow ),利用 Pull Request 以及 分支 來完成 代碼審查 (Code Review)與 環境配置 ,例如:開發版(development)、測試版(testing/QA)、上線產品(staging/production)。 使用 Docker,統一開發者、測試人員、以及產品的執行環境。 使用 EB CLI 將應用程式部署到 AWS Elastic Beanstalk 平台上。 使用 CircleCI 將以上工作全部自動化。偵測 GitHub 分支上的程式碼,若有更新則觸發:建置 Docker 環境、單元測試、然後自動部署新版本到 AWS EB。 使用 Slack,讓團隊成員能夠即時接收 GitHub 與 CircleCI 每一項動作的通知。 內容大綱 Node.js 在本地端執行 Node.js 在本地端測試 Node.js GitHub CircleCI 在 CircleCI 測試 Node.js Code Review with GitHub Flow Docker 在 Docker 執行 Node.js 在 CircleCI 測試 Docker ...