# Docker Compose
### 主講人:黃夙賢
---
## 用命令建立網頁資料庫應用
- 先抓資料->建docker network->mysql->phpmyadmin->apache
- 有沒有辦法把整套流程結合起來?
```
mkdir web
cd web
wget https://raw.githubusercontent.com/shhuangmust/html/111-1/immust_7_footer.html
docer network create mybridge
docker run -d --network mybridge --name db -p 3306:3306 -e MYSQL\_ROOT\_PASSWORD=abc1234 mysql
docker run -d --network mybridge --name myadmin -p 8888:80 phpmyadmin
docker run -d --name web --network mybridge -p 8080:80 -v $PWD:/var/www/html tutum/apache-php
```
---
## Docker Compose
- 使用docker run可以啟動單一的docker container,但是如果要啟動多個 docker container,需要輸入多次docker run,還要建立起之間的docker network連結
- docker compose主要的目的,就是在docker-compose.yml檔內,設定所有要一起啟動的docker container
---
## 下載Docker Compose
```
sudo apt install docker-compose-plugin
docker compose version
```

---
## docker-compose.yml
- docker-compose.yml是docker如何啟動多個服務的yaml檔案
```yaml=
version: '3'
services:
db:
image: mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: abc1234
myadmin:
image: phpmyadmin
ports:
- 8888:80
web:
image: tutum/apache-php
ports:
- 8080:80
volumes:
- $PWD:/var/www/html
```
---
## 下載docker-compose.yml
- wget https://raw.githubusercontent.com/shhuangmust/CloudComputing/main/docker-compose.yml

---
## 啟動docker compose
```
docker compose up -d
docker compose ps (查看啟動的服務)
(使用wsl,記得開啟docker desktop->settings->resource->wsl integration->Ubuntu)
```

---
## 執行結果

---
## 停止docker compose服務
- docker compose stop

---
## 刪除docker compose服務
- docker compose rm

---
## 期末作業
- 請使用docker compose技術,建立起一個擁有mysql資料庫,phpmyadmin管理介面,以及apache伺服器的容器服務
- 請將建立步驟以及畫面擷取下來,撰寫成雲端運算與應用網路期末報告,並於tronclass期末作業中繳交
---
## 參考解答(Powershell版本)
```
mkdir web
cd web
wget -Uri https://raw.githubusercontent.com/shhuangmust/html/111-1/immust_7_footer.html -Outfile index.html
wget -Uri https://raw.githubusercontent.com/shhuangmust/CloudComputing/main/docker-compose.yml -Outfile docker-compose.yml
(用notebook開啟docker-compose.yml,將$PWD目錄改成web目錄的路徑)
docker compose up -d
```
---
{"metaMigratedAt":"2023-06-17T18:27:41.084Z","metaMigratedFrom":"YAML","title":"Docker Compose","breaks":true,"contributors":"[{\"id\":\"ef0225b9-6c2a-4012-82c9-fa1031d2c4db\",\"add\":2981,\"del\":541}]"}