zoukankan      html  css  js  c++  java
  • docker 部署.net core 3.1程序

    docker 部署.net core 3.1程序


     

      公司部署网站一般是需要三台服务器,数据库服务器,应用服务器以及一台通讯服务器(环保行业需要稳定的数据接收服务,并进行入库),这种部署方式无疑给销售带来了麻烦,别人家都是1台服务器就够了,而我们却需要三台服务器,不占优势,并且,如果小木较小,也神请三台服务器很容易造成浪费,所以领导决定使用docker来做程序的部署,对程序进行隔离,小项目一台服务器搞定,并且所有项目都开始迁移到云上,这也是为什么上docker的背景了。

    docker安装

    安装所需的软件包,yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。

    sudo yum install -y yum-utils 
      device-mapper-persistent-data 
      lvm2

    使用命令来设置docker仓库(阿里源,官方源太慢了)

    sudo yum-config-manager 
        --add-repo 
        http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    安装docker

    sudo yum install docker-ce docker-ce-cli containerd.io

    启动docker并设置开机启动

    启动docker

    sudo systemctl start docker

    设置开机启动

    sudo systemctl enable docker

    设置镜像加速器

    登录阿里云控制台,并搜索 容器镜像服务 并选择镜像加速器

    按照步骤设置镜像加速器

    docker使用

    接下来就是使用docker部署我们的程序了,在我们的程序中添加Dockerfile

    Dockerfile

    #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/core/aspnet:3.1 AS base
    #修复调用System.Drawing生成图片时确少 libgdiplus 的问题
    RUN sed -i "s@http://deb.debian.org@http://mirrors.aliyun.com@g" /etc/apt/sources.list 
    RUN apt-get update -y && apt-get install -y libgdiplus && apt-get clean && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll
    WORKDIR /app
    EXPOSE 5004
    COPY . .
    ENTRYPOINT ["dotnet", "TyFrame.WebApi.dll"]

    FROM定制的镜像都是基于 FROM 的镜像,这里的asp.net core:3.1就是定制需要的基础镜像。后续的操作都是基于asp.net core:3.1。

    RUN:用于执行后面跟着的命令行命令。这里是因为基础镜像中确少依赖 libgdiplus 需要安装否则无法生成验证码。

    WORKDIR 工作目录。

    EXPOSE 声明端口,帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射,在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。

    CPOY 复制指令,从上下文目录中复制文件或者目录到容器里指定路径,COPY . . 意思是将本机的当前目录拷贝到容器中的工作目录中。

    ENTRYPOINT 类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。

    将编译好的发布文件复制到安装好docker的机器上,进入该目录执行如下命令进行构建镜像:

    sudo docker build -t tyframeapi .

    -t镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

    如需要了解更多参数,https://docs.docker.com/engine/reference/commandline/build/

    现在可以通过如下命令查看镜像列表:

     使用构建好的镜像启动容器

    sudo docker run  --name tyframeapi -v /etc/localtime:/etc/localtime:ro -d -p 5001:5001  tyframeapi

    --name为容器指定一个名称

    -v挂载一个卷,-v /etc/localtime:/etc/localtime:ro 挂载本机的/etc/localtime到容器内的/etc/localtime :ro readonly

    -d后台运行容器,并返回容器ID

    -p指定端口映射,格式为:主机(宿主)端口:容器端口

    tyframeapi指定容器装载的镜像

    如需要了解更多参数,https://docs.docker.com/engine/reference/commandline/run/

    通过docker ps –a查看容器运行情况

     看到STATUS 为UP状态访问该服务器的5001端口,网站可以正常访问,docker的安装和部署就完整完成了,由于很少使用Linux并且公司其他人使用的也不多,所以就采用了Jenkins来做持续集成。

  • 相关阅读:
    Codeforces Round #649 (Div. 2) D. Ehab's Last Corollary
    Educational Codeforces Round 89 (Rated for Div. 2) E. Two Arrays
    Educational Codeforces Round 89 (Rated for Div. 2) D. Two Divisors
    Codeforces Round #647 (Div. 2) E. Johnny and Grandmaster
    Codeforces Round #647 (Div. 2) F. Johnny and Megan's Necklace
    Codeforces Round #648 (Div. 2) G. Secure Password
    Codeforces Round #646 (Div. 2) F. Rotating Substrings
    C++STL常见用法
    各类学习慕课(不定期更新
    高阶等差数列
  • 原文地址:https://www.cnblogs.com/Yuuuuu/p/13714021.html
Copyright © 2011-2022 走看看