AspNetCoreapi 使用 Docker + Centos 7部署
环境准备
1:安装前准备
准备一台Linux 服务器或者系统或者安装CentOS 7的虚拟机,本文使用的是安装CentOS 7的本虚拟机,确保网络是通的,并可以连接外网,因为我们在部署的过程须有很多的东西需要下载。
部署中使用的工具:
Xshell:一个用于连接Linux服务器的操作终端
Xftp6:一个用于上传已发布的ASPNETCore 应用程序的文件系统的工具
2:安装Docker
启动Xshell 连接CentOS7 的Linux系统,具体连接可以参考windows系统下如何使用Xshell连接Linux 服务器终端,
界面如下:
注意:CentOS7 中切换用户可以使用su 密码 回车,切换到管理员用户,管理员用户是#开头,如果切换普通用户,su 用户,即可,普通用户是$开头
Docker的具体使用可以参考官方文档:https://docs.docker.com/
Docker-ce社区版本,Docker-ee企业版本本文选择使用的是社区版,设置软件源,软件源是设置的阿里云镜像(在阿里云镜像站上面可以找到docker-ce的软件源,使用国内的源速度比较快)
安装CentOS7 中Docker的安装
下面如果使用sudo 命令安装不行的话,就要先切换到root,然后再执行安装命令
如下:
su 回车
密码 输入密码 回车
# 即是root管理员
1、安装依赖
docker依赖于系统的一些必要的工具,安装docker需要的依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
2、设置docker的阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、安装docker的社区版本docker-ce
yum -y install docker-ce
4、启动docker
systemctl start docker
5、查看docker版本
docker version
6、测试hello-world
docker run hello-world
docker images 查看镜像
docker ps 列出在运行的容器信息
docker ps -a 列出所有在运行的容器信息
也可以参考官方安装过程:https://docs.docker.com/install/linux/docker-ce/centos/#install-docker-ce-1
Centos7 中AspNetCore 的运行环境
1、Microsoft 包存储库
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
2、安装 SDK
.NET Core SDK 使你可以通过 .NET Core 开发应用。 如果安装 .NET Core SDK,则无需安装相应的运行时。 若要安装 .NET Core SDK,请运行以下命令:
sudo yum install dotnet-sdk-3.1
如果不是再CentOS7 上做.NET Core 开发应用的话,只是运行 .NET Core 应用的话,那么只需要安装 .NET Core 应用的运行环境即可,.NET Core 运行时允许运行使用不随附运行时的 .NET Core 所开发的应用。 以下命令安装 ASP.NET Core 运行时,这是与 .NET Core 最兼容的运行时。 在终端中,运行以下命令。
sudo yum install aspnetcore-runtime-3.1
作为 ASP.NET Core 运行时的一种替代方法,你可以安装不包含 ASP.NET Core 支持的 .NET Core 运行时:将上述命令中的 aspnetcore-runtime-2.1 替换为 dotnet-runtime-3.1。
sudo yum install dotnet-runtime-3.1
3、sudo yum install dotnet-sdk-3.1
4、sudo dotnet --info 查看dotnet sdk 的版本,有信息,则说明安装成功
Visual Studio2019 发布AspNetCore项目文件publish
1、选择项目,右键 发布
2、将发布成功的publish文件,通过Xftp上传到Centos7中桌面上,上传成功以后,煮面上会多出一个publish文件夹,包含项目的所有文件。
3、使用Xshell 连接Centos7 ,连接成功,切换到桌面上的publish文件夹目录下
命令: cd publish
4、创建Dockerfile文件
命令:sudo touch Dockerfile
5、编辑Dockerfile,
命令:sudo vi Dockerfile 或者sudo vi Dockerfile
添加内容如下,具体内容根据自己的项目来写,本作者的项目是WebCoreApp
按i,进入编辑,编辑完后后按Esc推出编辑,按冒号:和wq和感叹号!退出保存
其实上面的Dockerfile文件可以在windows下编辑好,直接使用Xftp上传到centos7 的publish文件夹中也是可以的。
6、根据上传的publish生成映像
命令:sudo docker build -t webcoreapp . 注意最后面的 点不要去掉啊,表示当前目录
7、查看镜像
命令:sudo docker images
8、根据映像创建容器并运行
命令:sudo docker run --name webcoreapp -d -p 5000:80 webcoreapp
9、查看运行的容器
命令:sudo docker ps
如果没有容器的话,使用命令:sudo docker ps -a 找到容器的id,然后输入命令
sudo docker logs 容器id 查看错误信息
在外网浏览器输入:http://192.168.1.133:5000/weatherforecast
补充相关内容
Dockerfile的文件内容
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet","WebCoreApp.dll"]
centos7的docker安装及docker安装MySQL5.7
一、docker安装
1、查看内核,版本必须高于3.10
$ uname -r
2、移除旧的版本
$ sudo yum remove docker*
3、安装一些必要的系统工具
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
4、添加软件源信息(这里拉取阿里云的镜像)
$sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5、更新 yum 缓存
$ sudo yum makecache fast
6、安装 Docker-ce
$ sudo yum -y install docker-ce
7、启动 Docker 后台服务
$ sudo systemctl start docker
8、测试运行 hello-world
$ docker run hello-world
二、docker安装MySQL5.7
1、查找MySQL的可用镜像
$ docker search mysql
2、拉取MySQL镜像5.7
$ docker pull mysql:5.7
3、查看拉取的镜像
$ docker images |grep mysql
4、创建目录mysql,用于存放后面的相关东西
$ mkdir mysql
$ cd mysql
5、创建MySQL容器
复制代码
$ docker run -p 3360:3306 --name mysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#参数说明
-p 3360:3306:将容器的 3306 端口映射到主机的 3360 端口(第一个物理机端口,第二个容器端口)。
-v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。
-v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。
-v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。
-e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
-d: 后台运行容器,并返回容器ID
复制代码
6、查看运行的容器
$ docker ps | grep mysql
三、MySQL远程登录
1、开启docker交互模式终端
$ docker exec -i -t mymysql /bin/bash
2、登录MySQL
$ mysql -u root -p
3、输入密码进入MySQL后授权
#--数据库的所有权限授权给 user这个用户,允许user用户在任何一个 IP 进行远程登陆,并设置 root 用户的密码为 123456
> grant all PRIVILEGES on *.* to 'user'@'%' identified by '123456';
> flush privileges;
>exit;
4、退出docker终端
$ exit