zoukankan      html  css  js  c++  java
  • 将.net6(.netcore)项目部署到docker

    部署.net6项目到docker

    【1】新建.net6 mvc或webapi项目;

    使用 visual studio新建一个mvc项目,项目取名为:dotnet6Demo

    【2】在mvc或webapi项目的根目录下创建Dockerfile文件,并设置为始终复制;

    Dockerfile文件内容为:

    #添加.net6基础镜像
    FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
    #容器工作目录
    WORKDIR /app
    
    #指定项webapi或mvc站点的内部启动端口,默认是80
    #ENV ASPNETCORE_URLS http://+:5001
    
    #暴露docker容器端口
    #EXPOSE 8001
    #EXPOSE 443
    
    #拷贝发布目录下的所有文件到容器的工作根目录
    #COPY . . (这样写也可以)
    COPY ./ ./
    
    # 如果用System.SqlClient.dll访问数据库,需要加这一句
    RUN sed -i 's/TLSv1.2/TLSv1.0/g' /etc/ssl/openssl.cnf
    
    #容器入口点
    ENTRYPOINT ["dotnet", "dotnet6Demo.web.dll"]

    【3】发布mvc或webapi项目;

    4】将发布后的mvc或webapi项目拷贝到centos服务器的某个文件夹,例如拷贝到【/wwwroot/myproject】文件夹;

    【5】安装docker

    安装方法参考:https://www.cnblogs.com/yyee/p/15642801.html

    【6】安装.net6镜像

    docker pull mcr.microsoft.com/dotnet/aspnet:6.0

    【7】进入到centos服务器的 /wwwroot/myproject 目录,构建一个镜像,镜像名格式为【镜像名:版本号】,比如:dotnet6-demo:0.0.1

    构建镜像命令:

    cd /wwwroot/myproject
    docker build -t dotnet6-demo:0.0.1 .

    dotnet6-demo 表示构建的镜像名称,:0.0.1表示镜像版本号,注意镜像名后面有个空格 + 英文点号,表示构建当前路径下的文件。

    上面这条命令是用默认配置文件名 Dockerfile 构建的镜像,如果用自定义配置文件名构建镜像,需要加 -f 参数。

    docker build -f Dockerfile02 -t dotnet6-demo:0.0.1 .

    【8】创建自定义网络

    默认网络docker0,它不能用域名访问,所以要创建自定义网络。

    docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

    参数说明:

    --driver bridge #表示桥接模式
    --subnet 192.168.0.0/16 #16表示最多支持65535个ip,可以分配192.168.0.2到192.168.255.255,如果没有指定--subnet参数默认网段为172.17.0.0/16,默认网关为172.17.0.1;
    --subnet 192.168.0.0/24 #24表示最多支持254个ip,可以分配192.168..0.2到192.168.0.255
    --gateway #表示docker容器的网关
    mynet表示网络名

     

    在docker 中直接 run 创建容器时不加自定义的网络,默认使用网络名为bridge的网络,这是docker0网络,容器之间无法使用容器名相互ping通,只能通过ip相互ping通。

    我们自己定义的网络,容器之间是可以直接通过容器名相互ping通的。

     查看mynet网络的详细信息:

    docker network inspect mynet

    【9】创建并运行容器

    创建容器格式:

    docker run -d --name  容器名  -p  外部端口号:docker容器端口号  --restart=always  -v  /宿主机目录 : /容器目录  镜像名

    使用默认网络 docker0 创建容器(生产环境不推荐):

    docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload dotnet6-demo:0.0.1

    使用自定义网络创建容器(多了个 --net 参数):

    docker run -d --name my-dotnet6-demo01 -p 8001:80 --restart=always -v /www-appdata/dotnet6-demo/logs:/logs -v /www-appdata/dotnet6-demo/upload:/upload --net mynet dotnet6-demo:0.0.1

    参数说明:

    -d                   #后台运行

    -p 8001:80    #缩主机端口号 : docker端口号

    -v                  #数据卷路径,格式:(-v  /宿主机目录 : 容器目录)或者(-v  /容器目录),可以带多个 -v 参数。

    --restart=always     #dokcer重新启动时也将容器自动启动

    --net mynet            #指定网络名

    查看正在运行的容器:

    docker ps

    查看所有容器:

    docker ps -a

    【10】访问容器

    访问方式:http://宿主机ip:端口号

    http://192.168.1.200:8002

    进入到容器

    【11】进入到容器

    docker exec -it my-dotnet6-demo01 /bin/bash
    容器设置

    给已有容器设置开机自动启动

    docker update --restart=always 容器名字

    取消容器开机自动启动

    docker update --restart=no 容器名字
  • 相关阅读:
    国内10大前端团队网站
    可视化搭建前端工程
    Vue CLI环境变量和模式
    BetterScroll:可能是目前最好用的移动端滚动插件
    洛谷月赛
    CF438D The Child and Sequence
    P1447 [NOI2010]能量采集
    Cow Relays,过N条边的最短路
    Numerical Sequence(hard version),两次二分
    洛谷P3237 米特运输
  • 原文地址:https://www.cnblogs.com/yyee/p/15676770.html
Copyright © 2011-2022 走看看