Asp.Net Core基础篇之:使用Docker 将项目部署到Centos
一、准备工具
Win 10
Centos 8
Visual Studio 2019
Docker Desktop 下载地址:https://download.docker.com/win/stable/Docker%20Desktop%20Installer.exe
二、Cenos 8安装docker
1、安装
1 yum install docker 安装docker 2 systemctl start docker.service 启动docker服务 3 systemctl enable docker.service 设置docker服务开机自启动
2、检查
1 docker -v
三、创建.net core 3.1项目并发布
1、创建项目
注意:勾选启用Docker支持,选择Linux。
注意:将Dockerfile文件属性改为:始终复制。
2、生成项目,现在本地使用docker运行,保证项目正常运行。
第一次运行的时候,会提示你运行Docker Desktop,无脑点是。继续运行会自动下载运行项目时所需要的镜像,静等complete即可。
3、本地运行成功
4、本地发布
发布后的文件结构
5、修改Dockerfile文件地址
由于我们是发布到本地,vs帮我们自动生成的Dockerfile文件里,包含了生成—>发布—>运行的所有流程,在这里,我们只需要最后一步运行的数据就行了。
dockerfile文件指令说明:
- FROM -指定所创建镜像的基础镜像
- WORKDIR-配置工作目录
- EXPOSE-声明镜像内服务监听的端口 (可以不写,因为我们具体映射的端口可以在运行的时候指定)
- COPY-复制内容到镜像 (. .代表当前目录)
- ENTRYPOINT-启动镜像的默认人口命令
6、打包到Centos 8服务器,我这里使用的是:SecureCRT
7、构建docker镜像
进入到服务器的相关文件夹路径,输入:
1 docker build -t mytest-mvc .
注意:结尾的 . 不能漏掉
参数解释:
- -t 指定镜像名称 (只能小写)
- . 表示build上下文为当前目录,默认情况docker会使用上下文的根目录找到Dockerfile文件
查看构建的镜像,输入:
1 docker image ls
8、创建并运行容器
1 docker run --name myfirstWeb -d -p 5001:2345 firstdocker
参数解释:
- --name 表示容器名称(区分大小写),也可以不指定,默认会生成
- -d 表示在后台以守护形式运行容器
- -p 表示外部端口与内部容器端口映射。关于-p的还有其他用法(https://www.cnblogs.com/williamjie/p/9915019.html)
- 结尾 表示上一步创建的镜像名称
查看容器运行情况,输入:
1 docker ps -a
最后,我们在本地请求:
如果发现请求不了,多半是下面两种情况:
1、对外映射的端口没开启。
1 //查询端口号XXX 是否开启 2 firewall-cmd --query-port=XXX/tcp 3 //开启端口 4 firewall-cmd --zone=public --add-port=XXX/tcp --permanent 5 //重启防火墙 6 firewall-cmd --reload
2、创建运行容器时监听的端口弄错了:
1 //查看容器运行日志 2 docker logs 容器ID
容器相关常用命令:
1 //查看容器运行日志 2 docker logs 容器名称/容器ID 3 //停止运行容器 4 docker stop 容器名称/容器ID 5 //删除容器 6 docker rm 容器名称/容器ID 7 //重启容器服务 8 systemctl restart docker