从入门到入土03 netcore5部署到docker

netcore5/6 部署到docker

首先默认docker 已经安装好了。 如果没安装好的话 需要看
从入门到放弃01 .net 容器化01-容器安装 : 容器化01-容器安装(linux centos)

首先安装好MobaXterm软件。然后连接好服务器;自己创建好一个文件夹/public/net5service3v1/。
然后上传代码(我这是代码版本直接上去build),也可以直接publish,然后拿着发布好的去build;
首先 要创建dockerfile文件 这是必须的。
WORKDIR “/src/KH.S3/KH.FZ.Api.Client”
RUN dotnet publish “/src/KH.S3/KH.FZ.Api.Client/KH.FZ.Api.Client.csproj” -c Release -o /app/publish
这俩地方的路径要注意有时候找不到文件 得注意这里的路径问题了-src ,这俩地方有坑

FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:5.0-buster-slim AS build
WORKDIR /src
COPY ["KH.S3/KH.FZ.Api.Client/KH.FZ.Api.Client.csproj", "KH.S3/KH.FZ.Api.Client/"]
COPY ["KH.S3/KH.FZ.Domain/KH.FZ.Domain.csproj", "KH.S3/KH.FZ.Domain/"]
COPY ["KH.S3/KH.FZ.Domain.Core/KH.FZ.Domain.Core.csproj", "KH.S3/KH.FZ.Domain.Core/"]
COPY ["KH.S3/KH.FZ.Model/KH.FZ.Model.csproj", "KH.S3/KH.FZ.Model/"]
COPY ["KH.S3/KH.FZ.Infrastruct.Identity/KH.FZ.Infrastruct.Identity.csproj", "KH.S3/KH.FZ.Infrastruct.Identity/"]
COPY ["KH.S3/KH.FZ.Infrastruct/KH.FZ.Infrastruct.csproj", "KH.S3/KH.FZ.Infrastruct/"]
COPY ["KH.S3/KH.FZ.Common/KH.FZ.Common.csproj", "KH.S3/KH.FZ.Common/"]
COPY ["KH.S3/KH.FZ.Application/KH.FZ.Application.csproj", "KH.S3/KH.FZ.Application/"]
RUN dotnet restore "KH.S3/KH.FZ.Api.Client/KH.FZ.Api.Client.csproj"
COPY . .
WORKDIR "/src/KH.S3/KH.FZ.Api.Client"
RUN dotnet build "/src/KH.S3/KH.FZ.Api.Client/KH.FZ.Api.Client.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "/src/KH.S3/KH.FZ.Api.Client/KH.FZ.Api.Client.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "KH.FZ.Api.Client.dll"]

代码传上去之后要把dockerfile文件 考到根目录 这里面的目录都要注意很容易报招不到的错误
实际截图
docker build -t service3:v1(镜像名称:版本号) . (后面有个点别忘了)
build一下 => docker images 看看刚才的镜像有没有
然后run起来

docker run -it --name khnet5service3 -p 8081:80  -d service3

创建一个名叫 khnet5service3 的容器。8081端口映射到容器的80端口。
service3为上一步创建的镜像。

docker run -it --name 名字-p 5000:5000-v /root/dotnet/mesapi/app:/publish -d 镜像

网上也有人这么写。 加个 -v 就是创建一个卷 ;那我把相关的参数常用的写一下

docker run -itd --restart=always --log-driver json-file --log-opt max-size=10m --log-opt max-file=2 --name 名字 -p 对外端口:容器端口 -v /etc/localtime:/etc/localtime 镜像

挂载不要挂载根目录 挂载后容器内文件会失效的 这里有坑请注意

=======================================================

-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同添加链接描述时使用;
-P: 随机端口映射,容器内部端口随机映射到主机的端口
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
–name=“nginx-lb”: 为容器指定一个名称;
-m :设置容器使用内存最大值;
–net=“bridge”: 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;
–volume , -v: 绑定一个卷

下面是不常用的

–link=[]: 添加链接到另一个容器;
–expose=[]: 开放一个端口或一组端口;
-h “mars”: 指定容器的hostname;
-e username=“ritchie”: 设置环境变量;
–env-file=[]: 从指定文件读入环境变量;

创建结束之后呢 docker ps 查看容器就行了。
设置开启自启动 和 进程持续运行 请参考文章
nginx负载

然后开防火墙 放行端口 :
1、开放端口

firewall-cmd --zone=public --add-port=5672/tcp --permanent   # 开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent  #关闭5672端口
firewall-cmd --reload   # 配置立即生效

2、查看防火墙所有开放的端口

firewall-cmd --zone=public --list-ports

3.、关闭防火墙
如果要开放的端口太多,嫌麻烦,可以关闭防火墙,安全性自行评估

systemctl stop firewalld.service

4、查看防火墙状态

 firewall-cmd --state

5、查看监听的端口

netstat -lnpt

如果不是源码的话,是发布好的代码, 那就直接进入安装目录下
docker build -t 镜像名称 .
docker run --name 容器名称 -p 母鸡端口:容器内端口比如80 -v 母鸡目录或者文件:容器内文件或者目录 -itd 镜像名称

如下示例:
docker build -t farmzaiserviceapi .

docker run -itd --restart=always --name farmzaiserviceapi_v1.1 -p 8014:80 -v /etc/localtime:/etc/localtime -v /public/FarmzaiServiceApiV1/config/appsettings.json:/app/appsettings.json -v /public/FarmzaiServiceApiV1/config/log4net.config:/app/log4net.config -v /public/FarmzaiServiceApiV1/mountfolder/log:/app/log farmzaiserviceapi

----------------------简单版本 -----------------------------
安装docker后在net6的代码里编写dockerFile

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY . .
ENTRYPOINT ["dotnet", "covi.dll"]

=======================================
然后跟随编译后的代码一起传上去 然后cd到这个代码的目录
然后分别执行命令 打镜像和运行容器
卸载容器

docker rm -f  net6

卸载镜像

docker rmi  net6

安装镜像

docker build  -t  net6 . 

安装容器

docker run -it --restart=always -v /root/public/Temp:/app/Temp --name net6 -p 8080:80  -d net6
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值