---
# System prepended metadata

title: Azure 學習筆記『Azure Container Instance』篇

---

# Azure 學習筆記『Azure Container Instance』篇
CI/CD的引言好像不是一篇駢儷文

<div align="center">
<img src="https://content.nexza.com/stack-items/microsoft-azure-container-instances.b79ee62a.png">
</div>

#### 想部署網站但又不想手動安裝環境、服務部署更新想要CI/CD的強力加持，還是你的API需要以Batch的方式處理，為您呈現Azure Container Instance，使用它三個問題一次解決。

#### 除此之外還有幾個特色讓他顯得不凡
1. Hypervisor-level 的安全保護
2. 客製化所需運算資源
3. 透過不同Port的設置，讓多個服務得以集中管理於同一個容器


### 沒裝Docker的[按我](https://docs.docker.com/install/)
### 沒裝Azure CLi的[按我](https://docs.microsoft.com/zh-tw/cli/azure/install-azure-cli?view=azure-cli-latest)
## 今天要介紹如何部署Django到Azure Container Instance 以下為大致流程


<img src="https://i.ibb.co/k6975Wq/1.png">
### 1.到Web根目錄透過以下指令碼創立requirements.txt
```
pip freeze > requirements.txt
```
### 2.到Web根目錄下創建Dockerfile並輸入以下指令碼
```
FROM python:3 
RUN mkdir /code
WORKDIR /code
ADD . /code/
RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt
EXPOSE 8000 2222
CMD ["python", "/code/manage.py", "runserver", "0.0.0.0:8000"]
```
> 指令碼中的：
> 
> FROM --> 引入Base的Image檔
> 
> RUN --> image製作時運行的comand
> 
> WORKDIR --> 程式碼運行的資料夾
> 
> ADD --> 複製檔案的語法
> 
> EXPOSE --> 打通Port讓外面的Port可以連入
> 
> CMD --> docker run 運行時執行的Command

### ３.回到Terminal(與dockerfile同層級的位置）透過Docker製作Image
```
docker build -t 自行地義的名稱 .
```
### 4.到Portal建立Azure Container Registry
設定好
<div align="center">
<a href="https://ibb.co/pdY9fYq"><img src="https://i.ibb.co/GRzbWzm/2020-03-18-1-25-44.png" alt="2020-03-18-1-25-44" border="0"></a>
</div>
#### 記下Login Server
<img src="https://i.ibb.co/T10jv9b/2020-03-18-1-29-53.png" alt="2020-03-18-1-29-53" border="0">
### 5.透過Azure Cli 登入Azure Contaner Registry
```
az login
az acr login --name yourname
```
### 6.上傳Image到Azure Container Registry
```
docker tag image的名字 loginserver的名字.azurecr.io/image的名字:v1
docker push loginserver的名字.azurecr.io/image的名字:v1
```
### 7.開啟Azure Container Registry權限
```
az acr update -n acr的名字 --admin-enabled true
```
### 8.部署到Azure Container Instance
#### 1. Image Source 選擇Azure Container Registry，後就會跳出先前上傳的Image
<img src="https://i.ibb.co/zJfVKnj/2020-03-18-10-18-30.png" alt="2020-03-18-10-18-30" border="0">

#### 2. Port 輸入 8000 與選擇TCP，讓服務連結到Container裡面

<img src="https://i.ibb.co/JkPCmNc/2020-03-18-10-18-48.png" alt="2020-03-18-10-18-48" border="0">

#### 2.2 如果你之前CMD有部分要跟改，這遍就可以再加上去（他會覆蓋先前的CMD指令）
 
<img src="https://i.ibb.co/kGsH7y7/2020-03-18-10-23-00.png" alt="2020-03-18-10-23-00" border="0">

### 3. 到Properties "複製你的FQDN" ＋":8000" 就成功架好Web到Container上了

<img src="https://i.ibb.co/NxZj6nh/2020-03-18-11-09-12.png" alt="2020-03-18-11-09-12" border="0">
