发布.netCore WebApi服务并在Linux上部署
网站发布
使用vs2019将程序发布在本地文件夹:
1、将调试好的WebApi项目的解决方案资源配置的Debug换成Release。
2、右击项目-重新生成解决方案。
3、右击启动项-发布。
4、在发布的选项中选择编辑,跳出配置文件。
5、发布方法选择 “文件系统”,填写自定义的发布的系统位置。
6、在设置中选择相关的设置,部署模式有“框架依赖”和“独立”两种模式可以选择,选择框架依赖的时候,要求linux服务器上面装了相应版本的.net Core SDK和.net Core RunTime。
(此时发布的文件大小较小;若选择“独立模式”,则不要求服务器上面装相应版本的sdk和运行时,此时发布的文件夹较大,vs会将相应的环境一起打包发布。)
7、最后点击保存-发布,等待片刻即可完成相应的发布环节。在选择的文件系统路径中就可以找到发布的相应的文件。
linux上部署
1、先把发布的后的网站上传至服务器
2、进入文件目录
cd /usr/myWeb
输入ll查看目录下的文件
3、配置dockerfile
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1
COPY . ./app
WORKDIR /app
EXPOSE 5000
RUN cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
&& echo 'Asia/Shanghai' >/etc/timezone
ENTRYPOINT ["dotnet", "myWeb.dll"]
注释: 第一行aspnet:3.1,3.1是程序代码用的版本号,可以右击项目在属性中查看。
第四行 EXPOSE 5000 中5000是端口号和程序中配置的端口号要保持一致
第五、六行是设置时区的
最后一行 ENTRYPOINT [“dotnet”, “myWeb.dll”] 中的myWeb.dll是设置的程序入口
4、打包镜像
docker build -t myweb:v1 .
5、查看镜像是否打包成功
docker images;
成功后会显示在下面
6、运行镜像
docker run --name myapi -p 5000:5000 -d myweb:v1
7、查看运行的镜像是否运行成功
docker ps
成功会显示在下面
遇到的问题
1、容器名字被占用
解决办法:
查看历史运行的镜像
docker ps -a
更改执行的命令里的容器名字即可
2、新建的容器名字写错
解决办法:
查看正在运行的镜像 获取CONTAINER ID
停止该镜像运行
docker stop 1d49e6806383
删除该镜像
docker rm 1d49e6806383
1d49e6806383为上一步的CONTAINER ID
执行以上操作之后再重新运行镜像即可