zoukankan      html  css  js  c++  java
  • Centos7+DockerCompose部署ASP.NET Core3.1应用

    Compose 简介

    Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

    本文将介绍如何使用docker-compose编排多个服务。

    安装docker-compose前需要安装docker,安装方法可参考另一篇文章Centos7+Docker部署.NetCore3.1应用

    一.安装Docker-Compose

    官方源安装

    命令:curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    其他源安装 (官方的下载太慢了,用下面的源)

    命令:curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

     

    修改目录可执行权限(不然后续docker-compose up命令会报错)

    命令:sudo chmod +x /usr/local/bin/docker-compose

     

    查看docker compose版本

    命令:docker-compose --version

     

    二.添加docker-compose.yml文件和Dockerfile文件

    这里我们将使用docker-compose同时编排两个服务,服务名称分别为saleservicewechatgatewayservicedocker compose使用项目文件中添加的Dockerfile配置来创建容器。 

    /data/docker-compose/Release目录中添加一个docker-compose.yml文件(docker-compose文件使用YAML语言编写,一定要注意缩进,两个服务的缩进保持一致)——建议先阅读《YAML入门教程

    docker-compose.yml文件内容

    version: '3'

    services:

        saleservice:

            container_name: cdgift-saleservice

            build:

                context: ./saleService/app  

                dockerfile: Dockerfile

            ports:

                - '31320:31320'

            labels:

                description: "This sale service"

            restart: on-failure

     

        wechatgatewayservice:

            container_name: cdgift-wechatgatewayservice

            build:

                context: ./wechatGatewayService/app    

                dockerfile: Dockerfile

            ports:

                - '31380:31380'

            labels:

                description: "This wechat gateway service"

            restart: on-failure

    说明:

    versiondocker-componse版本

    container_name:容器名称

    context:打包的项目文件目录

    dockerfiledockerfile文件

    ports:映射主机和容器的端口

    description:说明信息(可以不要)

    restart:重启策略(可选值no、always、on-failureunless-stopped),建议选择always

      no:是默认的重启策略,在任何情况下都不会重启容器。

      always:容器总是重新启动。

      on-failure:在容器非正常退出时(退出状态非0),才会重启容器。

      unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器

    注意:我们这里的Dcokerfile文件放在/wechatGatewayService/app/saleService/app目录中

    saleService/app/Dcokerfile文件内容:

     

    wechatGatewayService/app/Dockerfile文件内容:

     

    将两个项目文件上传到在/data/docker-compose/Release目录中,如下如:

     

     

    三.用docker-compose启动容器

    命令:docker-compose up --build

     

     

    这里我们可以看到创建并启动了两个容器分别为cdgift-sale-apicdgift-wechat-gateway,并且看到cdgift-wechat-gateway服务监听31380端口 

    接着就可以访问31380端口的服务(如果服务器开了防火墙,记得先开启防火墙端口) 

    四.其他命令

    停止正在运行的容器

    docker stop 容器名称/容器ID

    启动停止的容器:

    docker start 容器名称/容器ID

    查询创建的容器:

    docker-compose ps

    删除指定容器:

    docker rm 容器名称/容器ID

    删除所有容器:

    docker rm $(docker ps -aq)

    查询所有镜像:

    docker ps -a

    删除镜像:

    docker image rm镜像名称/镜像ID

    删除所有镜像:

    docker rmi $(docker images -q)

      

    docker-compose命令详细参考

    命令:docker-compose -h

     

    五.附上一个真实项目的部署案列供参考(与本文只是目录结构不同,所以配置内容略有不通)

    系统目录结构如图:

     

    Dockerfile文件内容:
    FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

    MAINTAINER PDF

     

    LABEL description="CDGift.Sale.Service"

    LABEL version="1.0"

    WORKDIR /app

    COPY . .

    EXPOSE 31320

    RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

    ENV ASPNETCORE_ENVIRONMENT Production

    ENTRYPOINT ["dotnet","CDGift.SaleDomain.WebApi.dll"]

    docker-compose.yml文件内容:

    version: '3'

    services:

      cdgift-sale-api:

        build:

          context: $PWD/../build/files

          dockerfile: $PWD/../build/Dockerfile

        container_name: cdgift-sale-api

        hostname: cdgift-sale-api

        restart: always

        network_mode: "bridge"

        ports:

          - "31320:31320"

        environment:

          TZ: "Asia/Shanghai"

    ——本文为本人在技术预研和实际项目部署过程中所做的笔记,更多细节未一 一阐述,如有疑问可留言指正或共同学习探讨。

  • 相关阅读:
    汉语-词语:理解
    汉语-词语:头脑
    SELECT INTO
    SELECT
    scp
    samba
    rpmgraph
    rpmdeps
    rpmcache
    rpmbuild
  • 原文地址:https://www.cnblogs.com/pudefu/p/13087111.html
Copyright © 2011-2022 走看看