zoukankan      html  css  js  c++  java
  • .net 5 发布到 docker 或 docker 镜像方法

    一、非源码方式发布:将发布后的项目文件+dockerfile文件一起上传后,运行docker创建命令,即可。

    在visual studio 中进行web项目发布,并上传文件到服务器

          

    创建Dockerfile文件内容如下:

    复制代码
    FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim
    WORKDIR /app
    EXPOSE 80
    EXPOSE 443
    
    
    WORKDIR /app
    COPY .  /app
    ENTRYPOINT ["dotnet", "web.dll"]
    复制代码

    如果缺少gdilibplus使用下面的,添加了RUN

    #See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
    FROM mcr.microsoft.com/dotnet/aspnet:5.0-buster-slim AS base
    WORKDIR /app
    
    RUN apt-get update && 
        apt-get install -y libgdiplus && 
        cd /usr/lib && 
        ln -s libgdiplus.so gdiplus.dll
    
    EXPOSE 80
    EXPOSE 443
    
    WORKDIR /app
    COPY .  /app
    ENTRYPOINT ["dotnet", "TFCMS.dll"]

    dockerfile注解

    把此文件跟放到发布目录,然后执行:

    docker build -t tfcms .

    注意:上面的命令,在镜像名后还有一个空格加点的,这个不能少" ."

    然后把镜像挂载到docker中 如:

    docker run --name tfcms -d -p 5001:80 -p 5002:443
    • -d ,表示在后台以守护态(daemonized)形式运行容器

    • -p 外部端口与内部容器端口映射。

    • --name 指定容器的名称。当然可以不指定,默认会为我们创建

    • 最后一个参数 tfcms 就是我们刚创建的镜像名称

    或者 docker run -d -p 5001:80 -p 5002:443 -v /root/tfcms:/app --workdir /app mcr.microsoft.com/dotnet/aspnet dotnet /app/LinuxDockerNginx.dll

          -p:指定物理主机5001端口映射到docker容器80端口 

          -v:复制物理主机中的文件到docker容器中的指定目录 

          --workdir:指定后续指令目录

                       mcr.microsoft.com/dotnet/aspnet:指定对应的基础镜像  使用dotnet命令运行项目dll

    如此即可发布完成。

    运行项目 

    运行项目
    
    docker run -itd -p 5000:80 dockerpublish
    
    -itd:交互式后台启动

          

         -p:指定物理主机5001端口映射到docker容器80端口 

        dockerpublish:镜像名称

    二、源码镜像制作

          2.1将源码拷贝到Centos指定目录下,并在源码总文件夹的同级目录下,复制Dockerfile文件

                   

         2.2 进入到Dockerfile同级目录,进行镜像构建

         

        使用docker构建命令进行构建:docker build -t dockerpublish -f Dockerfile . 

        -t :镜像名称(必须小写)  -f :Dockerfile文件 最后圆点指定dockfile文件 
        

    三、将Docker 镜像推送到阿里云镜像仓储

     在阿里云创建自己的容器仓库 https://cr.console.aliyun.com/cn-hangzhou/instances/repositories

     

    按照阿里云的提示进行镜像推送。

    先登录,密码为阿里云的账号密码

    推送镜像,注意镜像ID 和版本

    这时候可以在阿里云的镜像版本看到自己的版本信息

    这里推送到阿里云的镜像完成

    在linux上获取阿里云自己的Docker镜像

    这时候的本地镜像仓库就存在阿里云的版本的镜像

    在linux运行项目,多版本回滚

    执行 命令

    docker run --name test -d -p 8003:8003 registry.cn-hangzhou.aliyuncs.com/lijiqing/test:1.0.2

     

    版本的回滚指的是,当发布新的镜像之后 如果出现bug或者其他问题,可以将当前容器关闭,运行之前旧的镜像

    四、docker 常见命令

       docker run:docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start)

       docker start :启动已存在的镜像

       docker  stop:停止镜像

       docker  stop $(docker ps -q):停止所有镜像

       docker images:docker中的所有镜像

       docker ps -a :显示容器列表 -a 显示所有容器(默认显示正在运行)

       docker pull:拉取镜像   name:tag 指定版本,默认latest

       docker search:搜索的范围是官方镜像和所有个人公共镜像

       docker rm :删除容器

       docker rmi:删除镜像

       docker rm $(docker ps -aq):删除所有停止的容器

            docker exec -it 容器ID /bin/bash :进入指定id的容器    

    更多精彩文章请关注我们的微信公众号FocusDotCore

  • 相关阅读:
    HDU 1051 Wooden Sticks (贪心)
    PHP中递归函数的一个常见逻辑问题
    【Android界面实现】使用Canvas对象实现“刮刮乐”效果
    vue2.0
    vuex3
    nodejs中require的路径是一个文件夹时发生了什么
    vue2
    vuex
    echarts
    node21---mongoose
  • 原文地址:https://www.cnblogs.com/tianfengcc/p/14332534.html
Copyright © 2011-2022 走看看