ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

ASP.NET Core Ocelot+Consul+Nginx+JWT Linux服务器部署文件

2022-04-17 00:32:08  阅读:145  来源: 互联网

标签:文件夹 Core ASP Consul tcp json compose 222.111 docker


目录

ASP.NET Core Ocelot+Consul+Nginx+JWT Linux服务器部署文件

整体文件结构介绍

  1. 项目文件夹:TestProject
    1. 鉴权中心 + Nginx 文件夹:Nginx_AuthenticationCenter
      1. config文件夹
      2. publish文件夹
      3. docker-compose
      4. Dockerfile
    2. 网关+Nginx文件夹:Nginx_GateWay
      1. config文件夹
      2. publish文件夹
      3. docker-compose
      4. Dockerfile
    3. Consul+Nginx文件夹:Nginx_Consul
      1. config文件夹
      2. docker-compose
    4. 用户微服务文件夹:User
      1. config文件夹
      2. publish文件夹
      3. docker-compose
      4. Dockerfile
    5. 课程微服务文件夹:Lesson
      1. config文件夹
      2. publish文件夹
      3. docker-compose
      4. Dockerfile
    6. 各类SH脚本文件
      1. authenticationcenter_svc.sh
      2. gateway_svc.sh
      3. user_svc.sh
      4. lesson_svc.sh
      5. update_svc.sh
      6. start_svc.sh

鉴权中心 + Nginx 文件夹:Nginx_AuthenticationCenter

config文件夹

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConfigInformation": {
    "RootUrl": "http://111.44.222.111:6300", //�������
    "UserUrl": "/api/userapi/User/validate",
    "JWTTokenOptions": {
      "Audience": "http://localhost:8761",
      "Issuer": "http://localhost:8761",
      "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB"
    }
  }
}

key.json

{"D":"ayJEcDAFTdAjKtn/wUvAe0z0RtXcOFENJm55PaTbDV8QAKfKKENY5K+nvU36uSi3qh2xP6NVoo3H3rDlk6X8AEuAOQs+arGfHQ/aL4Ob3skuEioHWszXScJ2KTzrrsolOik9SybNLRSMIgQKyZY5URk3BhLqSvMDwBQ2Nht/mlx+eQi1GpPgiJFH77BlRt3O/LKafAtgS292RxeKUJn3Q4dsn1PtJX+PMPT+bn+9PZXpQtSI8r8yUtrFja61WcGN8aJrG47EfT5wa3J/mcfhEK+4hU2uI3ycW+TaNjuxDZ+nAD4k3pcNT6a1ldSi3CnZKR2p/MUh07oazmx2QEg54Q==","DP":"t58aASvJT2+mQCi9EN5RksOXrgzGNB2U6PeS8NJ9ht6HiA78+fZKrfbxXxz8i/069Tyg7dkzYeKFd93q9FhFKqsOGE67gqjelKIXFTN2s2DFiJ7neFHkIhPisdS/a+SzHziFsxYHJbWobuHlrDw2QcoYGDsgS1Crbatn7t90Hfs=","DQ":"dzpHSw7DD1vwy+mOX5nRJLVniSmcIX8MMWtCXlmzj6CdUddyiGSGFhTB+hjVHLPxsJAzoV4zBFRt1s+CHGlgjhfD6ct58i7bDVG/6OVUI4v95iYiA7kPB44DlOzVjuhlGmTm5Tw5eTwjA3s/5FUuif0DShzt4jam7f+jlTvkXaM=","Exponent":"AQAB","InverseQ":"MTykln8IgIQ2DwhC4d0d/RXNk5/PvKXSY8goldKfxCiAwTmArivvuxfHC01oKFlZkZbPRVvh0rM9QkM4pX9ITfKd4+VoxmDtMMx5oEkbxKMbJQkUvJeADmtcy/zfXq8ZNSNcIkAI4setydA6tOvRZKuudJ5tEpXOxwTel8U5ltM=","Modulus":"o0jSDb5OYfSTPFPjZS67yovVQLEA5OIrey/1mBCH8Xxvo1zLwKPYzWwkRjzSLURZ19V9AeKAiP+JxDtGRzmUflqXY3e7vKeEosk5MoUj4MlBvxVxDL3bdghJaqhARaqsuXQ1dvOGABsDIogBmvCJyJOBHXISLl+hDGIOQSpHqtMFz4UHAF5v62x82oMYT8O4lTfoTSF1+jMH31rCCERXFEz2DUngdsT8gwQncTMrVTS2dIdacvkWmN0yvzLmMqZetv12p10O7jjuN61hlhhccAibGeU3X1veOHS4L9TzQ0rLPK/yTm3QlShWZD8oiLBnNXGhS0m/RTk3Uc7IrvvaqQ==","P":"0daJpBirbZIUYZyqeXW6csoy2eKDO81G4DAe0gzyZUk7ZQ97H3sIRdKU05lmeR0KuEtp71LOaljx2MJ1vawF4zoJ3MQEjzQYQS0Gq5zLPrX/Q+Sy/7Brb9oYlfwDzlyszlZqjSyJjupNOAlpkTkytt6a5g6LtD44mo2A9XCteTM=","Q":"xzSFkOTiJGyTNatXO8pAxZyGg4qjAweJOL5wv5dGqFF7fWx92uJrMcGy6kda5A3aCE0KG0441fWjGPjzb6GvoTzwADRx4mNhOcVV0gx/lbKydc15KaBNEX29TkmYbG4dRQ5wOs+FBm0PAHcQgK64AFYhobG4w8VZBLxCXdwndLM="}

nginx.conf

worker_processes  1;
events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    upstream authentication{
        server 111.44.222.111:6597;
	    server 111.44.222.111:6598; 
	    server 111.44.222.111:6599;
    }

    server {
        listen       80;
        server_name  localhost;       
        location / {
            proxy_pass  http://authentication;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

pubish文件夹主要存放项目的发布文件

docker-compose

version: '3.3'
services:
  serviceocelot1:
    build:
      context: /home/TestProject/AuthenticationCenter/
      dockerfile: /home/TestProject/AuthenticationCenter/Dockerfile
    image: authenticationcenter.v0127
    ports:
      - 6597:80/tcp
    container_name: "AuthenticationCenter1"
    command: "dotnet /app/Common.AuthenticationCenter.dll"
    volumes:
      - /home/TestProject/AuthenticationCenter/config/appsettings.json:/app/appsettings.json
  serviceocelot2:
    image: authenticationcenter.v0127
    ports:
      - 6598:80/tcp
    container_name: "AuthenticationCenter2"
    command: "dotnet /app/Common.AuthenticationCenter.dll"
    volumes:
      - /home/TestProject/AuthenticationCenter/config/appsettings.json:/app/appsettings.json
  nginxocelot:
    depends_on:
      - serviceocelot2
    image: nginx:latest
    ports:
      - 6600:80/tcp
    container_name: "nginxAuthenticationCenter"
    volumes:
      - /home/TestProject/AuthenticationCenter/config/nginx.conf:/etc/nginx/nginx.conf

Dockerfile

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

网关+Nginx文件夹:Nginx_GateWay

config文件夹

appsetings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "JWTTokenOptions": {
    "Audience": "http://localhost:8761",
    "Issuer": "http://localhost:8761",
    "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB"
  }
}

OcelotConfiguration.json

{
  "Routes": [    
    {
      "UpstreamPathTemplate": "/api/lessonapi/{url}",
      "UpstreamHttpMethod": [
        "Get",
        "Post",
        "Put",
        "Patch",
        "Delete",
        "Options"
      ],
      "UserServiceDIscovery": true,
      "ServiceName": "LessonCenter",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "DownstreamPathTemplate": "/api/lessonapi/{url}",
      "DownstreamScheme": "http",
      "DownstreamHeaderTransform": {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "*",
        "Access-Control-Allow-Headers": "*"
      },
      "AuthenticationOptions": {
        "AuthenticationProviderKey": "UserGatewayKey",
        "AllowedScopes": []
      }
    },
    {
      "UpstreamPathTemplate": "/lesson/swagger/v1/swagger.json",
      "UpstreamHttpMethod": [
        "Get"
      ],
      "UseServiceDiscovery": true,
      "ServiceName": "LessonCenter",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "DownstreamPathTemplate": "/swagger/v1/swagger.json",
      "DownstreamScheme": "http",
      "RateLimitOptions": {
        "ClientWhiteList": [
          "ajun816",
          "superhero"
        ],
        "EnableRateLimiting": true,
        "Period": "5m",
        "PeriodTimespan": 30,
        "Limit": 5
      }
    },
    {
      "UpstreamPathTemplate": "/api/userapi/{url}",
      "UpstreamHttpMethod": [
        "Get",
        "Post",
        "Put",
        "Patch",
        "Delete",
        "Options"
      ],
      "UserServiceDIscovery": true,
      "ServiceName": "UserCenter",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "DownstreamPathTemplate": "/api/userapi/{url}",
      "DownstreamScheme": "http",
      "DownstreamHeaderTransform": {
        "Access-Control-Allow-Origin": "*",
        "Access-Control-Allow-Methods": "*",
        "Access-Control-Allow-Headers": "*"
      }
    },
    {
      "UpstreamPathTemplate": "/user/swagger/v1/swagger.json",
      "UpstreamHttpMethod": [
        "Get"
      ],
      "UseServiceDiscovery": true,
      "ServiceName": "UserCenter",
      "LoadBalancerOptions": {
        "Type": "RoundRobin"
      },
      "DownstreamPathTemplate": "/swagger/v1/swagger.json",
      "DownstreamScheme": "http",
      "RateLimitOptions": {
        "ClientWhiteList": [
          "ajun816",
          "superhero"
        ],
        "EnableRateLimiting": true,
        "Period": "5m",
        "PeriodTimespan": 30,
        "Limit": 5
      }
    },

  "GlobalConfiguration": {
    "BaseUrl": "http://127.0.0.1:8070", //网关对外地址
    "ServiceDiscoveryProvider": {
      "Host": "127.0.0.1",
      "Port": 8500,
      "Type": "Consul" //由Consul提供服务发现
    },
    "RateLimitOptions": {
      "QuotaExceededMessage": "Too many requests, maybe later? 11", // 当请求过载被截断时返回的消息
      "HttpStatusCode": 666, // 当请求过载被截断时返回的http status
      "ClientIdHeader": "client_id" // 用来识别客户端的请求头,默认是 ClientId
    }
  }
}

nginx.conf

worker_processes  1;

events {
	worker_connections  1024;
}
 
 
http {
    include       mime.types;
    default_type  application/octet-stream;
 
    sendfile        on;
 
    keepalive_timeout  65;
    upstream mygateway{
        server 111.44.222.111:6297;
        server 111.44.222.111:6298;
        server 111.44.222.111:6299;
    } 
 
    server {
	listen       80;
 
	server_name  localhost;
 
	location / {
	    proxy_pass  http://mygateway;
        }
 
 
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

publish文件夹存放项目的发布内容

docker-compose

version: '3.3'
services:
  gateway1:
    build: 
      context: ${currpwd}
      dockerfile: ${currpwd}/Dockerfile
    image: gateway.v1
    ports:
      - 6297:80/tcp
    container_name: "gatewayservice1"
    command: "dotnet /app/Common.OcelotGateway.dll"
    volumes:
      - ${currpwd}/config/OcelotConfiguration.json:/app/OcelotConfiguration.json
  gateway2:
    image: gateway.v1
    ports:
      - 6298:80/tcp
    container_name: "gatewayservice2"
    command: "dotnet /app/Common.OcelotGateway.dll"
    volumes:
      - ${currpwd}/config/OcelotConfiguration.json:/app/OcelotConfiguration.json
  gateway3:
    image: gateway.v1
    ports:
      - 6299:80/tcp
    container_name: "gatewayservice3"
    command: "dotnet /app/Common.OcelotGateway.dll"
    volumes:
      - ${currpwd}/config/OcelotConfiguration.json:/app/OcelotConfiguration.json
  nginxocelot:
    depends_on:
      - gateway3
    image: nginx:latest
    ports:
      - 6300:80/tcp
    container_name: "nginxocelot"
    volumes:
      - ${currpwd}/config/nginx.conf:/etc/nginx/nginx.conf

Dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
COPY ./publish app/
WORKDIR /app
ENTRYPOINT ["dotnet", "Zhzt.Common.OcelotGateway.dll"]

Consul+Nginx文件夹:Nginx_Consul

Config文件夹

nginx.conf

worker_processes  1;

events {
	worker_connections  1024;
}
 
http {
    include         mime.types;
    default_type    application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    upstream consul {
	    server 111.44.222.111:8500;
	    server 111.44.222.111:9500; 
	    server 111.44.222.111:10500;
	    server 111.44.222.111:11500;
	    server 111.44.222.111:12500;
    } 
 
    server {
	    listen       80;
        server_name  localhost;
        
        location / {
            proxy_pass  http://consul;
        }
        
        error_page   500 502 503 504  /50x.html;

        location = /50x.html {
            root   html;
        }
    }
}

docker-compose

version: '3.3'
services:
  service1:
    image: consul
    ports:
      - 8300:8300/tcp
      - 8301:8301/tcp
      - 8302:8302/tcp
      - 8400:8400/tcp
      - 8500:8500/tcp
      - 8600:8600/tcp
      - 8301:8301/udp 
      - 8302:8302/udp
    container_name: "node1"
    command: "agent -server -bind=0.0.0.0 -bootstrap-expect=3 -node=node1 -data-dir=/tmp/data-dir -client=0.0.0.0 -ui"
  service2:
    depends_on:
      - service1
    image: consul
    ports:
      - 9300:8300/tcp
      - 9301:8301/tcp
      - 9302:8302/tcp
      - 9400:8400/tcp
      - 9500:8500/tcp
      - 9600:8600/tcp
      - 9301:8301/udp 
      - 9302:8302/udp
    container_name: "node2"
    command: "agent -server -bind=0.0.0.0 -join=101.43.223.131 -node=node2 -data-dir=/tmp/data-dir -client=0.0.0.0 -ui"
  service3:
    depends_on:
      - service2
    image: consul
    ports:
      - 10300:8300/tcp
      - 10301:8301/tcp
      - 10302:8302/tcp
      - 10400:8400/tcp
      - 10500:8500/tcp
      - 10600:8600/tcp
      - 10301:8301/udp 
      - 10302:8302/udp
    container_name: "node3"
    command: "agent -server -bind=0.0.0.0 -join=101.43.223.131 -node=node3 -data-dir=/tmp/data-dir -client=0.0.0.0 -ui"
  service4:
    depends_on:
      - service3
    image: consul
    ports:
      - 11300:8300/tcp
      - 11301:8301/tcp
      - 11302:8302/tcp
      - 11400:8400/tcp
      - 11500:8500/tcp
      - 11600:8600/tcp
      - 11301:8301/udp 
      - 11302:8302/udp
    container_name: "node4"
    command: "agent -bind=0.0.0.0 -retry-join=101.43.223.131 -node=node4 -client=0.0.0.0 -ui"
  service5:
    depends_on:
      - service4
    image: consul
    ports:
      - 12300:8300/tcp
      - 12301:8301/tcp
      - 12302:8302/tcp
      - 12400:8400/tcp
      - 12500:8500/tcp
      - 12600:8600/tcp
      - 12301:8301/udp 
      - 12302:8302/udp
    container_name: "node5"
    command: "agent -bind=0.0.0.0 -retry-join=101.43.223.131 -node=node5 -client=0.0.0.0 -ui"
  service6:
    depends_on:
      - service5
    image: nginx
    ports:
      - 18500:80/tcp
    container_name: "consulnginx"
    volumes:
      - ./conf/nginx.conf:/etc/nginx/nginx.conf

用户微服务文件夹:User

config文件夹

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "MySqlConn": "Server=111.44.222.111;Database=db_user;Uid=root;Pwd=111111;SslMode=none;"
  },
  "CodeFirstSettings": {
    "Migrate": "true", //是否开启同步(是否进行codefirst创建表)
    "Backup": "true", //是否进行备份
    "ModelPath": "UserModel" //要进行同步的Model程序集路径
  },
  "SqlSugarSnowFlakeSettings": {
    "WorkerId": "1"
  },
  "ConsulClientOption": {
    "IP": "111.44.222.111",
    "Port": "18500",
    "Datacenter": "dc1"
  },
  "ConsulRegisterOption": {
    "IP": "111.44.222.111",
    "Port": "8761",
    "GroupName": "UserCenter",
    "HealthCheckUrl": "http://111.44.222.111:8761/Health",
    "Interval": 10,
    "Timeout": 5,
    "DergisterCriticalServiceAfter": 20,
    "Tag": "13"
  }
}

publish存放项目发布文件

docker-compose

version: '3.3'
services:
  user1:
    build: 
      context: ${currpwd}
      dockerfile: ${currpwd}/Dockerfile
    image: user.v1
    ports:
      - 10091:80/tcp
    container_name: "userservice1"
    command: "dotnet /app/UserMicroservice.dll  ConsulRegisterOption:IP=111.44.222.111 ConsulRegisterOption:Port=10091 ConsulRegisterOption:HealthCheckUrl=http://111.44.222.111:10091/Health"
    volumes:
      - ${currpwd}/config/appsettings.json:/app/appsettings.json
  user2:
    depends_on:
      - user1
    image: user.v1
    ports:
      - 10092:80/tcp
    container_name: "userservice2"
    command: "dotnet /app/UserMicroservice.dll  ConsulRegisterOption:IP=111.44.222.111 ConsulRegisterOption:Port=10092 ConsulRegisterOption:HealthCheckUrl=http://111.44.222.111:10092/Health"
    volumes:
      - ${currpwd}/config/appsettings.json:/app/appsettings.json

Dockerfile

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

课程微服务文件夹:Lesson

config文件夹

appsettings.json

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft.AspNetCore": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "MySqlConn": "Server=111.44.222.111;Database=db_Lesson;Uid=root;Pwd=111111;SslMode=none;"
  },
  "CodeFirstSettings": {
    "Migrate": "true", //是否开启同步(是否进行codefirst创建表)
    "Backup": "true", //是否进行备份
    "ModelPath": "LessonModel" //要进行同步的Model程序集路径
  },
  "SqlSugarSnowFlakeSettings": {
    "WorkerId": "1"
  },
  "JWTTokenOptions": {
    "Audience": "http://localhost:8761",
    "Issuer": "http://localhost:8761",
    "SecurityKey": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDI2a2EJ7m872v0afyoSDJT2o1+SitIeJSWtLJU8/Wz2m7gStexajkeD+Lka6DSTy8gt9UwfgVQo6uKjVLG5Ex7PiGOODVqAEghBuS7JzIYU5RvI543nNDAPfnJsas96mSA7L/mD7RTE2drj6hf3oZjJpMPZUQI/B1Qjb5H3K3PNwIDAQAB"
  },
  //"ConsulClientOption": {
  //  "IP": "111.44.222.111",
  //  "Port": "18500",
  //  "Datacenter": "dc1"
  //},
  //"ConsulRegisterOption": {
  //  "IP": "111.44.222.111",
  //  "Port": "8761",
  //  "GroupName": "LessonCenter",
  //  "HealthCheckUrl": "http://111.44.222.111:8761/Health",
  //  "Interval": 10,
  //  "Timeout": 5,
  //  "DergisterCriticalServiceAfter": 20,
  //  "Tag": "13"
  //},

  //本地测试ConsulClientOption

  "ConsulClientOption": {
    "IP": "localhost",
    "Port": "8500",
    "Datacenter": "dc1"
  },
  "ConsulRegisterOption": {
    "IP": "localhost",
    "Port": "8761",
    "GroupName": "LessonCenter",
    "HealthCheckUrl": "http://localhost:8761/Health",
    "Interval": 10,
    "Timeout": 5,
    "DergisterCriticalServiceAfter": 20,
    "Tag": "13"
  }
}

publish存放项目的发布文件

docker-compose

version: '3.3'
services:
  lesson1:
    build: 
      context: ${currpwd}
      dockerfile: ${currpwd}/Dockerfile
    image: lesson.v1
    ports:
      - 10071:80/tcp
    container_name: "lessonservice1"
    command: "dotnet /app/LessonMicroservice.dll  ConsulRegisterOption:IP=111.44.222.111 ConsulRegisterOption:Port=10071 ConsulRegisterOption:HealthCheckUrl=http://111.44.222.111:10071/Health"
    volumes:
      - ${currpwd}/config/appsettings.json:/app/appsettings.json
  lesson2:
    image: lesson.v1
    ports:
      - 10072:80/tcp
    container_name: "lessonservice2"
    command: "dotnet /app/LessonMicroservice.dll  ConsulRegisterOption:IP=111.44.222.111 ConsulRegisterOption:Port=10072 ConsulRegisterOption:HealthCheckUrl=http://111.44.222.111:10072/Health"
    volumes:
      - ${currpwd}/config/appsettings.json:/app/appsettings.json

Dockerfile

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

各类Shell脚本文件

authenticationcenter_svc.sh

cd AuthenticationCenter
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

gateway.sh

cd GateWay
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

lesson_svc.sh

cd Lesson
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

update.sh

  1. shell声明一个currpwd变量
  2. pwd 小写是命令 大写是变量 效果一样, Linux pwd(英文全拼:print work directory) 命令用于显示工作目录。执行 pwd 指令可立刻得知您目前所在的工作目录的绝对路径名称。
  3. 执行docker-compose时,传入这个变量(当前文件路径)
#!/bin/bash

cd consul
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

cd ..
cd GateWay
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

cd ..
cd User
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

cd ..
cd Lesson
export currpwd=$(pwd)
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.yml up --build -d

mysql文件夹

docker-compose

version: '3.3'
services:
  service1:
    image: mysql:8.0
    ports:
      - 3306:3306/tcp
    container_name: "db_mysql"
    volumes:
      - /home/data/mysql_data:/var/lib/mysql
    environment:
      - "MYSQL_ROOT_PASSWORD=111111"
      - "TZ=Asia/Shanghai"

标签:文件夹,Core,ASP,Consul,tcp,json,compose,222.111,docker
来源: https://www.cnblogs.com/AJun816/p/16154803.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有