使用docker部署.net core应用
CentOS
使用VS2017新建一个asp.net core项目
发布web应用程序
使用FTP工具,将程序文件copy到linux上
XShell连上linux并登陆
cd /CoreWebDemo #进入应用程序目录
vi Dockerfile #编辑Docker配置文件,文件不存在会自动创建
#基于microsoft/aspnetcore或者microsoft/dotnet:runtime来构建我们的镜像 FROM microsoft/dotnet:runtime#拷贝项目publish文件夹中的所有文件到 docker容器中的publish文件夹中 COPY . /publish#设置工作目录为 `/publish` 文件夹,即容器启动默认的文件夹 WORKDIR /publish#设置Docker容器对外暴露80端口 EXPOSE 80#使用CoreWebDemo.dll来运行应用程序ENTRYPOINT ["dotnet", "CoreWebDemo.dll"]
View Code
可以选择runtime或者完整sdk来创建镜像,完整的sdk创建的镜像有1.75G左右,而runtime创建的镜像只有300M左右,建议使用runtime来创建镜像。
编辑完毕后,保存退出
vi /etc/docker/daemon.json #编辑配置文件使用加速服务,如果不存在自动新增
{"registry-mirrors": ["https://registry.docker-cn.com"] }
View Code
编辑完成,保存退出
$ sudo systemctl daemon-reload $ sudo systemctl restart docker #重启docker
docker build -t 镜像名称 . #建立一个镜像(注意最后一个空格+点),该过程可能会非常缓慢,建议使用加速器或者VPN
docker run --name 容器名称 -d -p 80:80 -e "ASPNETCORE_URLS=http://+:80" 镜像名称
-d 后台进程。
-p是进行宿主和容器之间端口的映射,(-p 宿主端口:容器端口)
ASPNETCORE_URLS=http://+:80 应用程序启动时绑定80端口
如果防火墙没有开启80端口,就重新开启
firewall-cmd --zone=public --add-port=80/tcp --permanent
systemctl stop firewalld.service #停止firewall systemctl disable firewalld.service #禁止firewall开机启动
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
docker添加加速服务教程: https://yeasy.gitbooks.io/docker_practice/content/install/centos.html
PS:如果使用runtime来创建镜像,可能会出现错误
error:
An assembly specified in the application dependencies manifest (CoreWebDemo.deps.json) was not found:
package: 'Microsoft.ApplicationInsights.AspNetCore', version: '2.1.1'
path: 'lib/netstandard1.6/Microsoft.ApplicationInsights.AspNetCore.dll'
This assembly was expected to be in the local runtime store as the application was published using the following target manifest files:
aspnetcore-store-2.0.0-linux-x64.xml;aspnetcore-store-2.0.0-osx-x64.xml;aspnetcore-store-2.0.0-win7-x64.xml;aspnetcore-store-2.0.0-win7-x86.xml
编辑web项目的csproj文件
增加如一行到 csjproj文件中即可:<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
最后csjproj文件看上去像这个样子:
<PropertyGroup><TargetFramework>netcoreapp2.0</TargetFramework><PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest></PropertyGroup>
重新发布,上传到linux。执行docker run语句,就会创建成功。
docker常用命令
删除镜像
docker rmi c861a419888a(镜像ID)
删除容器
docker rm xxxxxxxxx(容器id)
创建容器
docker commit -p xxxxxxxxxxx(容器id) name(快照名称)
保存本地tar备份
docker save -o /xxxxxxxx.tar name(镜像名称)
还原本地tar备份
docker load -i /xxxxx.tar
查看所有容器
docker ps -a
停止一个容器
docker stop 容器名称
转载于:https://www.cnblogs.com/twinhead/p/8321467.html
使用docker部署.net core应用相关推荐
- Linux上用Docker部署Net Core项目
前提:本地配置好Docker环境 1.构建Net Core镜像 docker pull microsoft/dotnet 2.新建一个DockerFile文件并填充内容 #基于 `microsoft/ ...
- ASP.NET Core微服务(七)——【docker部署linux上线】(RDS+API接口测试部分)
ASP.NET Core微服务(七)--[docker部署linux上线]: 本文测试采用阿里云的RDS(sqlserver服务器)+ECS(linux服務器)进行测试,由于是测试,[按量付费]买个最 ...
- 从零实操基于WSL2 Docker部署Asp.Net Core项目
前言 平日在公司里都是基于阿里Teambition中的飞流进行Docker部署Api项目或服务,已经习惯了那一套成熟的操作流程,开发和部署确实快捷方便,但是还没在自己的电脑上进行操作过,特别是Wind ...
- Azure DevOps+Docker+Asp.NET Core 实现CI/CD(三.实现CD持续部署管道)
前言 本文主要是讲解如何使用Azure DevOps+Docker 来实现持续集成Asp.NET Core项目(当然 也可以是任意项目). 上一篇: Azure DevOps+Docker+Asp.N ...
- 基于VS2017的Docker Support体检ASP.NET Core站点的Docker部署
最近在学习如何用 Docker 部署生产环境中的 ASP.NET Core 站点,作为一个 Docer 新手,从何处下手更容易入门呢?一开始就手写 Docker 配置文件(Docfile, docke ...
- ASP.NET Core开发-Docker部署运行
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- ASP.NET Core开发Docker部署
ASP.NET Core开发Docker部署,.NET Core支持Docker 部署运行.我们将ASP.NET Core 部署在Docker 上运行. 大家可能都见识过Docker ,今天我们就详细 ...
- .net core 使用 FreeSpire.XLS 实现 excel 转 png - docker 部署
背景 前后端分离项目, 后端需返回大量数据, 由于样式复杂,导致前端操作卡顿.通过返回图片解决. 踩坑日记 FreeSpire.XLS && Aspose.Cells包都可以实现.实现 ...
- Docker 部署SpringBoot项目不香吗?
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...
- Docker的使用初探(二):Docker与.NET Core的结合
目录 Docker的使用初探(二):Docker与.NET Core的结合 添加Dockefile 1. 在创建项目时添加 2. 手动添加 3. 容器业务流程协调控制程序支持 Dockefile语法 ...
最新文章
- 杀毒软件原理后续阶段
- 5.6 Column Attribute
- 新Astaroth***病毒可利用杀毒软件窃取数据
- web项目怎么连接云服务器,web项目怎么连接云服务器
- 集群、负载均衡、分布式
- iOS Xcode4.2代码管理工具的使用
- Windows获取CPU、内存和磁盘使用率脚本
- 电脑表格日期怎么修改原有日期_为何电脑系统时间常出错或无法修改?怎么解决?...
- 云班课计算机第二阶段测试卷,云班课测试题答案
- JDK8新特性LocalDate、LocalTime和LocalDateTime
- PROC文件及文件夹创建
- vmware 7.0 序列号_更改solidworks序列号及修改安装
- 新计算机是飞行模式怎么开,win10系统电脑开机只有飞行模式怎么办
- c语言srand函数作用,C语言之rand()和srand()函数
- C++语言for循环实现从1加到100:1+2+3+...+100=
- 编码:隐藏在计算机软硬件背后的语言(一)编码
- LeNet-5网络结构详解
- Java 之 socket 网络编程
- 2022全新Java学习路线图动力节点(七)架构师必备技术
- 联合国 ITU 立项成功,DevOps 标准开启国际化模式!