## 將開發測試環境 ## Docker 化 ## ![](http://chart.apis.google.com/chart?cht=qr&chs=256x256&chl=https%3A//hackmd.io/p/S100gPTDG&chld=H|0) --- ### DEMO: git-it 班級教學環境 ###### (COSCUP 2016 工作坊) ---- ## 開啟一臺虛擬機器 * [DigitalOcean](https://cloud.digitalocean.com/login) * 系統: Ubuntu 16.04.3 x64 * 規格: USD$ 5/month * 地區: Singapore * Add SSH keys * 機器名稱 ---- ## 設定 DNS * [CloudFlare](https://www.cloudflare.com/a/login) * 複製 IP 填到 DNS 中 * 不要過 CloudFlare CDN ---- ## 設定 ssh config ``` Host do HostName do.taichunmin.tk User root IdentityFile ~/.ssh/taichunmin@gmail.com.key ``` --- ## 安裝 git-it-docker ```shell git clone https://github.com/taichunmin/git-it-course-docker.git cd git-it-course-docker bash ./install.sh docker-compose up -d ``` --- ## 常用命令 * <span class="fragment" data-fragment-index="1">`docker-compose up -d` 以 daemon 模式啟動服務</span> * <span class="fragment" data-fragment-index="2">`docker-compose down` 關閉服務</span> * <span class="fragment" data-fragment-index="3">`docker-compose pull` 重新抓取 image</span> * <span class="fragment" data-fragment-index="4">`docker-compose exec [example] bash` 進入 example 這臺機器</span> * <span class="fragment" data-fragment-index="5">`docker-compose logs [example]` 查看 example 的 stdout</span> --- ## 該怎麼做 1. <span class="fragment" data-fragment-index="1">定義 `Dockerfile` 建立或是使用現有的 image</span> 2. <span class="fragment" data-fragment-index="2">以 `docker-compose.yml` 定義有什麼 Docker 服務</span> 3. <span class="fragment" data-fragment-index="3">使用 `docker-compose up -d` 來啟動機器</span> --- ## Dockerfile 1. <span class="fragment" data-fragment-index="1">選擇從哪個 image 繼承</span> 2. <span class="fragment" data-fragment-index="2">安裝所需軟體 (需改成無人值守自動安裝的指令)</span> 3. <span class="fragment" data-fragment-index="3">修改設定檔</span> 4. <span class="fragment" data-fragment-index="4">清理 image</span> 5. <span class="fragment" data-fragment-index="5">設定容器的啟動指令</span> #### <span class="fragment" data-fragment-index="6">範例: [client 的 Dockerfile](https://github.com/taichunmin/git-it-course-docker/blob/master/client/Dockerfile)</span> --- ### docker-compose.yml 範例 * [git-it-course-docker](https://github.com/taichunmin/git-it-course-docker/blob/master/docker-compose.yml) * [淨水器](https://gitlab.program.com.tw/MiniOasis/MiniOasis/blob/master/docker-compose.yml) --- ### docker-compose 支援 .env * 自動讀取 `.env` [範例](https://gitlab.program.com.tw/MiniOasis/MiniOasis/blob/master/.env.example) --- ## 官方文件 (English) * [簡介](https://docs.docker.com/compose/overview/) * [安裝 Compose](https://docs.docker.com/compose/install/) * [開始使用](https://docs.docker.com/compose/gettingstarted/) * [常見問題](https://docs.docker.com/compose/faq/) * [命令列文件](https://docs.docker.com/compose/reference/) * [設定檔文件](https://docs.docker.com/compose/compose-file/)
{"metaMigratedAt":"2023-06-14T15:44:39.022Z","metaMigratedFrom":"YAML","title":"將開發測試環境 Docker 化","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"moon\"}","contributors":"[{\"id\":\"0d9a5e06-1f92-4142-b9df-fed4c8873573\",\"add\":2,\"del\":22}]"}
    848 views