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 可以定义成环境变量,在脚本中直接进行引用,这样可以保证后续脚本及构建步骤基本上可以模板化,保存为模板。