azure 環境設置
-
登錄azure
-
使用微軟賬號就可以進行登錄。
-
點擊右上角新建項目
-
項目信息,盡量用小寫
創建項目
修改默認的dockerfile
```
FROM microsoft/dotnet:2.1-aspnetcore-runtime-stretch-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM microsoft/dotnet:2.1-sdk-stretch AS build
RUN mkdir -p /app
WORKDIR /src
COPY . .
RUN dotnet restore "firstapp.csproj"
RUN dotnet build "firstapp.csproj" -c Release -o /app
FROM build AS publish
RUN dotnet publish "firstapp.csproj" -c Release -o /app
FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "firstapp.dll"]
```
准備dockerhub賬號
- 地址: https://hub.docker.com/
- 創建一個免費倉庫
到現在為止,docker倉庫創建完畢,代碼倉庫也創建完畢,准備開始構建。
構建流程
部署完成后,就可以看到 docker鏡像上傳到dockerhub了。
在服務器上運行docker
這里演示用ubuntu服務器, 首先安裝docker環境
sudo apt-get install docker.io
安裝成功后在終端輸入docker,確保docker安裝ok。
增加構建步驟,ssh到服務器,自動拉取鏡像並運行。
# stop and remove all containers
currcontainer=$(docker ps -a | grep "$(Build.Repository.Name)_feature*" | awk '{print $1}')
if [ "${currcontainer}" != "" ]; then
docker stop $(docker ps -a | grep "$(Build.Repository.Name)_feature*" | awk '{print $1}')
docker rm -f $(docker ps -a | grep "$(Build.Repository.Name)_feature*" | awk '{print $1}')
fi
# run curr
docker pull a304885433/$(Build.Repository.Name):$(Build.BuildId)
docker run -d -p 8002:80 --name=$(Build.Repository.Name)_feature a304885433/$(Build.Repository.Name):$(Build.BuildId)
再次部署,就可以看到部署成功,站點就可以訪問了。
其他
- 鏡像名稱一定要增加 賬號前綴,比如說示例中的就是 a304885433/firstapp:xxxx ,這樣在構建鏡像后,才可以直接推動到這個賬號下的這個倉庫。
- 服務器運行docker鏡像的時候,必須先停止已運行的鏡像,然后在啟動。 在啟動鏡像時,需要指定name,后續可以根據name查詢這個鏡像。僅當該鏡像存在,則需要停止並刪除這個鏡像。
后續優化
- dockerid 可以定義成環境變量,在腳本中直接進行引用,這樣可以保證后續腳本及構建步驟基本上可以模板化,保存為模板。