CentOS利用Nginx+Docker部署.netcore应用
参考文章 https://www.cnblogs.com/sheng-jie/p/8107877.html
1.安装docker
1.1官方文档
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
[root@sn ~]# yum remove docker \ #删除旧版本 docker-common \ docker-selinux \ docker-engine [root@sn ~]# yum install -y yum-utils \ device-mapper-persistent-data \
lvm2
[root@sn ~]# yum-config-manager \ --add-repo \
https://download.docker.com/linux/centos/docker-ce.repo [root@sn ~]# yum install docker-ce #安装docker
[root@sn ~]# systemctl start docker #启动docker
1.2 docker
通过运行
hello-world
映像验证安装是否正确。
[root@sn ~]# docker run hello-world
1.3 配置镜像加速
[root@sn ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://3e722983.m.daocloud.io
[root@sn ~]# systemctl restart docker
1.4 拉取microsoft/dotnet镜像
[root@sn ~]# docker pull microsoft/dotnet
[root@sn ~]# docker pull microsoft/microsoft/aspnetcore
[root@sn ~]# docker images
//启动一个dotnet镜像
[root@sn ~]# docker run -it microsoft/dotnet
//创建项目名为HelloDocker.Web的.NET Core MVC项目
[root@sn ~]# dotnet new mvc -n HelloDocker.Web
//进入HelloDocker.Web文件夹
[root@sn ~]# cd HelloDocker.Web
//启动.NET Core MVC项目
dotnet run
2. 挂载宿主机项目到容器中
2.1 通过FileZilla上传项目的宿主机demo目录下:
2.2 基于microsoft/dotnet:latest镜像,映射5000端口到宿主机5000端口并挂载宿主机demo到容器app目录
[root@sn ~]# docker run -p : -it -d -v /demo:/app microsoft/dotnet:latest
[root@sn ~]# docker ps
[root@sn ~]# docker exec –ti 4044ea20a695 /bin/bash
root@630623fd1c84:/app/demo/SN_ITProjectSolution/WA_SNWeb# dotnet run
测试结果
外部访问宿主机IP 192.168.30.190:5000自动跳转到Docker容器172.17.0.2:5000,说明部署成功。
3. 通过Nginx负载均衡80端口跳转5000端口
3.1 安装nginx
:http://blog.csdn.net/Jenson_/article/details/77896608
3.2 修改配置文件:
vi /usr/local/nginx/conf/nginx.conf
修改添加代码:
http {
include mime.types;
default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on;
#tcp_nopush on; #keepalive_timeout ;
keepalive_timeout ; #gzip on;
upstream 192.168.30.190 {
server 192.168.30.190:5000 ;
}
server {
listen ;
server_name 192.168.30.190; #charset koi8-r; #access_log logs/host.access.log main; location / {
root html;
index index.html index.htm;
proxy_pass http://192.168.30.190;
}
测试结果:
外部访问192.168.30.190(默认80端口)跳转到192.168.30.190:5000端口,192.168.30.190:5000是Docker容器172.17.0.2:5000的映射端口。
4.借助Dockerfile
Dockerfile用来定义你将要在容器中执行的系列操作。我们来创建第一个Dockerfile:
//确保进入我们创建的项目目录中去
$ cd /root/demo/PublishOutput//使用touch命令创建Dockerfile
$ touch Dockerfile
//使用vi命令编辑Dockerfile
vi Dockerfile
进入VI编辑界面后,复制以下代码,使用shift + Ins
命令即可粘贴。然后按ESE
退出编辑模式,按shift + :
,输入wq
即可保存并退出编辑界面。
FROM microsoft/dotnet:latest
WORKDIR /app
COPY . /app
EXPOSE
ENV ASPNETCORE_URLS http://*:5000
CMD ["dotnet"," WA_SNWeb.dll"]
上面的命令我依次解释一下:
- 使用
FROM
指定容器使用的镜像 - 使用
WORKDIR
指定工作目录 - 使用
COPY
指令,复制当前目录(其中.
即代表当前目录)到容器中的/app目录下 - 使用
RUN
命令指定容器中执行的命令 - 使用
EXPOSE
指定容器暴露的端口号 - 使用
ENV
指定环境参数,上面用来告诉.NETCore项目在所有网络接口上监听5000端口 使用CMD指定运行命令dotnet WA_SNWeb.dll
Dockerfile就绪,我们就可以将我们当前项目打包成镜像以分发部署。
使用docker build -t <name> <path>
指令打包镜像:
$ docker build -t hellodocker.web .
以上命令就是告诉docker将当前目录打包成镜像,并命名为hellodocker.web。命令执行完毕,输入docker images
即可看到我们新打包的镜像。镜像创建完毕我们就可以直接运行了:
docker run -dit -p 5000:5000 hellodocker.web /bin/bash
上面的指令就是运行我们新打包的镜像,并通过-p
参数映射容器的5000到宿主机的80端口,其中-dit
参数告诉docker以后台任务形式运行镜像。
至此,我们借助Docker就完美的完成了.NET Core项目的容器化部署。
我打包的镜像是保存在本地的,我如何把镜像部署到其他机器上呢?
5.推送镜像到仓库
docker login
在推送之前要把镜像按<user>/<repo>
格式来命名。那如何重命名呢,我们用打标签的方式重命名:
docker tag hellodocker.web xiaowenxiao/hellodocker.web:v1
docker images
docker push xiaowenxiao/hellodocker.web
换台机器执行:
docker pull xiaowenxiao/hellodocker.web:v1
docker run -p : xiaowenxiao/hellodocker.web:v1
CentOS利用Nginx+Docker部署.netcore应用的更多相关文章
- Docker部署NETCORE应用程序
Docker部署NETCORE应用程序 创建.netcore项目,本文以ASP.NET Core2.2 版本为例 设置Dockerfile属性始终复制 编辑Dockerfile内容 FROM micr ...
- Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip
目录 Nginx+Docker部署模式下 asp.net core 获取真实的客户端ip 场景 过程还原 结论 参考资料 Nginx+Docker部署模式下 asp.net core 获取真实的客户端 ...
- Centos 7使用docker部署LAMP搭建wordpress博客系统
0.简要概述 LAMP是目前比较流行的web框架,即Linux+Apache+Mysql+PHP的网站架构方案.docker是目前非常流行的虚拟化应用容器,可以为任何应用创建一个轻量级.可移植的容器. ...
- Centos 中使用通过docker 部署.netcore
此前,我一直觉得,目前网络上的各种各样的技术文章.技术文档已经足够多,任何一种技术,都可以或多或少的在网络上找到教程,或者在qq群里找到前辈解答.所以,我觉得自己在博客上写文章的意义甚少.甚至觉得自己 ...
- Docker部署netcore web实践
1. 新建一个netcore的项目 2. 我们到项目的生成输出目录下,创建一个Dockerfile文件 3. 编辑Dockerfile文件 备注:红线圈住的地方,就是你生成的netcore的程序名称 ...
- docker部署netcore应用(二)
基于第一章已经安装好了docker,这次将把netcore应用部署到docker容器中 开发工具vs2017,准备个DotNet Core的Console应用程序,测试一下 发布DockerTest项 ...
- Centos下使用Docker部署asp.net core项目
本文讲述 CentOS 系统 Docker 中部署 asp.net core开源项目 abp 的过程 步骤 1. 拉取 asp.net core 基础镜像 docker pull microsoft/ ...
- CentOS利用nginx和php-fpm搭建owncloud私有云
1.安装owncloud CentOS下有一键安装命令 yum install owncloud 默认配置目录: /etc/owncloud 默认内容目录: /usr/share/owncloud 2 ...
- (转)Centos下,Docker部署Yapi接口管理平台
接口测试的工具很多,公司引进了接口管理平台Yapi,自己尝试直接搭建,从安装Nodejs到配置MongoDB数据库,再到安装yapi的时候,遇到浏览器打开本地服务器Ip地址后,没有显示部署内容...没 ...
随机推荐
- asp.net -mvc框架复习(7)-基于MVC搭建用户登录项目框架
整体框架: 一.搭建Model层 1.添加通用数据访问类 2.添加实体类(封装和传递数据,和数据库中数据表对应) 3.添加数据访问类(通常和实体类同名,但是后缀名发生改变) 二.搭建控制器层Contr ...
- angular 选中切换面板
此方法采用的是没有路由的方式: html5 代码: <div [hidden]="flag"> <li class="music-list-datail ...
- JS中获取session中传过来的值对象
摘录自:http://www.360doc.com/content/11/0316/13/5790498_101627263.shtml 把某一对象置于session范围内,并在JSP页面中提取ses ...
- Java项目专栏之数据库建表
Java项目专栏之数据库建表 数据库建表前期准备 1. 安装mysql:数据库语言,语法和sql server差不太多,如果习惯于sql server可以不用mysql. 2. 安装navicat:可 ...
- Halcon一日一练:创建三通道图像
首先理解一个什么是三通道图像: 三通道图像就是彩色图像,我们之前黑白相机或黑白电视机都是彩用的灰阶图像,即单通道图像,一般是2的8次方个灰阶,即256个灰阶.彩色图像采用RGB,红绿蓝三个通道来合成彩 ...
- ulua c#调用lua中模拟的类成员函数
项目使用ulua,我神烦这个东西.lua单纯在lua环境使用还好,一旦要跟外界交互,各种月经不调就来了.要记住贼多的细节,你才能稍微处理好.一个破栈,pop来push去,位置一会在-1,一会在-3,2 ...
- JDK安装及Tomcat安装
JDK安装及Tomcat安装 JDK 解压JDK到常用盘符 D为例 Tomcat安装 将tomcat.zip解压到常用的根目录下,我这里以D盘为例.这样就算安装好了! 接下来开始配置环境变量,打开环境 ...
- 【php】phpExcel使用教程,如何导出excel表格
[1]下载phpExcel类文件 可在官方去下载 我们只需要classes中的文件,把Classes文件复制到项目中 只需要2个文件就可以了 一个就是phpExcel(刚才我们复制过来的文件 Cla ...
- Bug等级判断标准
测试的问题大致可分为以下几个类型:致命问题严重问题一般问题轻微问题 判断标准如下1.致命问题:造成系统崩溃.死机.死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题.如:代 ...
- java的优势解读
1. java确定每种基本类型所占存储空间的大小.它们的大小不会像大多数语言那样随机器硬件架构的变化而变化.这种所占存储空间大小的不变性是java程序比用其他大多数语言编写的程序更具有可移植性的原因之 ...