## 將開發測試環境
## Docker 化
## 
---
### 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}]"}