微信云托管:基本使用指南-程序员宅基地

技术标签: 工具使用  微信开放平台  微信  微信云托管  云托管  docker  

微信云托管

推荐:微信云托管:基本使用指南

确实是个好平台,部署个项目很简易,免去了很多运维上的事情。

一、微信云托管 github 流水线配置 和 端口号

  1. 首先,这里的主体(宿主机),指的就是你的代码本身,可以理解为有一个服务器拉取了你的代码。
  • 例如:Dockerfile文件中,指令:COPY src /demo-server/src 中的src目录,就是代码路径中的src目录。
  1. 编写Dockerfile文件(根据Dockerfile,创建镜像,启动容器)
# 选择构建用基础镜像。如需更换,请到[dockerhub官方仓库](https://hub.docker.com/_/java?tab=tags)自行选择后替换。
FROM maven:3.6.0-jdk-8-slim as build
# 指定构建过程中的工作目录
WORKDIR /demo-server
# 将src目录下所有文件,拷贝到工作目录中src目录下(.gitignore/.dockerignore中文件除外)
COPY src /demo-server/src
# 将pom.xml文件和settings.xml文件,拷贝到工作目录下
COPY settings.xml pom.xml /demo-server/
# 自定义settings.xml, 选用国内镜像源以提高下载速度
RUN mvn -s /demo-server/settings.xml -f /demo-server/pom.xml clean package

# 基础镜像
FROM  openjdk:8-jre
# 作者
MAINTAINER holmes
# 设置工作目录
WORKDIR /demo-server
# 复制jar包
COPY --from=build /demo-server/target/*.jar .
# 暴露端口
EXPOSE 80
# 启动程序
CMD ["java","-jar","demo-server-1.0-SNAPSHOT.jar"]
  1. 明白项目,采用哪个端口号。
  • 微信云托管-流水线配置、Dockerfile、服务配置都会有端口号,要明确配置的端口号是哪个
  • http 80 和 https 443 ,这两个协议默认的端口,大家都知道,但是也很容易忽略!
  1. Dockerfile文件和要部署的项目目录,同级目录才可。(可以通过 目标目录 来锁定目录位置。)

在这里插入图片描述

参考官方:https://github.com/WeixinCloud/wxcloudrun-springboot

二、如何使用服务 基础信息-环境变量 ?

在微信云托管中,通过配置环境变量,你可以向容器传递需要的配置信息。类似于在 Docker 中使用 -e 或 --env 选项来设置环境变量,注意此处是类似,并不是等同于!

微信云托管中的环境变量配置可能类似于以下 Docker 命令:

docker run -e KEY1=value1 -e KEY2=value2 -e ANOTHER_KEY=another_value my_image

上述命令中,-e 选项用于设置容器中的环境变量,KEY1、KEY2 和 ANOTHER_KEY 是环境变量的名称,而 value1、value2 和 another_value 则是相应环境变量的值。

提醒一下,不同服务获取环境变量的语法不同,例如:

SpringBoot 环境变量配置:

  • SpringBoot 环境变量替换格式为:${xxx}

在这里插入图片描述

# 开发环境配置
spring:
  # 数据源配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # 主库数据源
      master:
        url: jdbc:mysql://${
    mysql_address}/holmes-center?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: ${
    mysql_address_password}

node 环境变量配置:

# 暂未实践
const serverAddress = process.env.SERVER_ADDRESS;

三、如何 配置ngxin.conf 文件?

特意强调一下nginx,nginx.conf是无法动态获取微信云托管的环境变量配置!微信云托管设置的这些环境变量可以在应用程序中读取,不能再nginx配置文件读取,同样其他的一些中间件也是一样!

Nginx.conf中的$xxx,获取的是容器内部的系统环境变量,如下:

location /prod-api/ {
  rewrite ^/prod-api(/.*)$ $1 break;
  # $host是容器系统的环境变量
  proxy_pass $host;
}

一开始我就以为微信云托管服务配置的环境变量就和 docker -env 参数一样是的,给系统添加环境变量,就能给nginx.conf动态配置了,操作了半天也不管用。咨询了半天总结出来就是:不同的工具和平台而有所差异,微信云托管的环境变量 和 docker -env参数环境变量 ,在效果上,只能说是类似,不能说完全相同!

所以,微信云托管要是配置nginx服务,目前总结出两种方式

  1. 直接在nginx.conf或者Dockerfile文件中写死就行,一般内网域名啥的不会变化,也不用担心暴露。
  2. 通过写脚本,先将云托管的环境变量读取到脚本中,再写入到nginx.conf文件。
#!/bin/bash
# 读取微信云托管的环境变量
SERVER_ADDRESS=$SERVER_ADDRESS

# 动态生成 Nginx 配置文件
echo "server {
       listen 80;
       server_name $SERVER_ADDRESS;

       # 其他配置...
     }" > /etc/nginx/conf.d/my_custom_config.conf

# 启动 Nginx
nginx -g 'daemon off;'

四、Webshell 使用

在这里插入图片描述

因为,经常碰到两个服务之间调不通,所以用好Webshell很方便。

五、内网地址

服务的内网地址,要根据声明暴露的端口号来,并且不是https协议,而是http协议!

在这里插入图片描述

举个例子:

假如,内网地址为dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com,并且暴露的端口是8080端口,那么正确代理配置应该如下:

# 生产环境
location /prod-api/ {
  rewrite ^/prod-api(/.*)$ $1 break;
  # 根据 微信云托管后台服务内网 配置
  proxy_pass http://dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com:8080/;
}

而不是直接代理到 “https://dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com” ,此处协议不是https,并且端口也不是443,应该是8080 。

一般内网地址不会是https协议的,其次,端口与暴露的端口一致,并不是直接通过域名映射到指定的ip:端口的!

mpwnf.holmes-center-server.hahsntqc.ie54110f.com" ,此处协议不是https,并且端口也不是443,应该是8080 。

一般内网地址不会是https协议的,其次,端口与暴露的端口一致,并不是直接通过域名映射到指定的ip:端口的!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/IT_Holmes/article/details/135823641

智能推荐

【超快超轻YOLO】YOLO-Fastest从Darknet源码编译、测试再到训练完整图文教程!-程序员宅基地

文章浏览阅读5.9k次,点赞4次,收藏54次。最轻的YOLO算法出来了!这是个模型非常小、号称目前最快的YOLO算法——大小只有1.3MB,单核每秒148帧,移动设备上也能轻易部署。而且,这个YOLO-Fastest算法满足所有平台..._yolo-fastest

oracle自治事务的写法_oracle存储过程自治事务-阿里云开发者社区-程序员宅基地

文章浏览阅读196次。pb调用存储过程的时候,使用了事务,为了存储过程的逻辑功能完整,往往在存储过程中也会使用事务。如何保证存储过程内外的事务合理使用显得尤为重要。pb调用存储过程的事务,我们称其为主事务。他与存储过程内的事务关系,无非就两种情况。两个事务是同一个事务或者两个事务是独立的两个事务。oracle提供了参数PRAGMA AUTONOMOUS_TRANSACTION用于标示存储过程内的事务为自治事务,实例如下...

P2V–离线迁移windows、linux到OpenStack中(转)-程序员宅基地

文章浏览阅读280次。2019独角兽企业重金招聘Python工程师标准>>> ..._p2v克隆windows

1分钟快速了解UML是啥-程序员宅基地

文章浏览阅读1.1k次。描述系统中的类,以及各个类之间的关系的静态视图。---------------------------------------摘自《设计模式就该这样学:基于经典框架源码和真实业务场景》(谭勇德)_uml

解决Windows cmd里git log 中文乱码的问题_cmd git log 中文乱码-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏7次。解决Windows cmd里git log 中文乱码的问题在当前cmd里输入set LESSCHARSET=utf-8设置环境变量,变量名: LESSCHARSET ,变量值: utf-8_cmd git log 中文乱码

Extjs多个tab页面——panel层叠_extjs写一个panel,多个ta-程序员宅基地

文章浏览阅读4.8k次。Extjs多个tab页面——panel层叠_extjs写一个panel,多个ta

随便推点

关键字_关键字用来定义条件语句的分支-程序员宅基地

文章浏览阅读390次。什么是关键字:被java语音赋予特点含义的单词关键字的特点:组成字母全小部小写常见的代码编辑器,对关键字有特殊的颜色常见关键字举例用于定义数据类型的关键字:class 类interface 声明了这是一个java 的接口@interface 是用来修饰 Annotation 的,它是继承了 java...._关键字用来定义条件语句的分支

数据库中表和视图的关系-程序员宅基地

文章浏览阅读868次。联系: 视图(view)是在基本表之上建立的表,它的结构(即所定义的列)和内容(即所有数据行)都来自基本表,它依据基本表存在而存在。一个视图可以对应一个基本表,也可以对应多个基本表。视图是基本表的抽象和在逻辑意义上建立的新关系。区别:1、视图是已经编译好的sql语句。而表不是 2、视图没有实际的物理记录。而表有。 3、表是内容,视图是窗口 4、表只用物理空间而视图不占用物理空间,视图只是逻辑概..._统计和数据库视图有什么关系

ZZULIOJ1061: 顺序输出各位数字_zznuoj1061顺序输出各位数字-程序员宅基地

文章浏览阅读614次。【代码】ZZULIOJ1061: 顺序输出各位数字。_zznuoj1061顺序输出各位数字

maven打包错误: Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources on-程序员宅基地

文章浏览阅读601次。问题截图:解决方案:在pom.xml文件中添加: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.4.3</version> _failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.3.0

ArduPilot开源飞控之do_failsafe_action_开源飞控解锁-程序员宅基地

文章浏览阅读310次。之前在[ArduPilot飞控之FAILSAFE机制](https://blog.csdn.net/lida2003/article/details/132191018)中,针对Ardupilot的`FAILSAFE`机制进行了相对完整的介绍。本章节将从代码的角度来看`FAILSAFE`代码触发入口,以及对应的应对策略。_开源飞控解锁

运维工作反思总结_运维工作汇报不足-程序员宅基地

文章浏览阅读3.3k次。软件项目的生命周期分为六个阶段:项目前期、项目启动、项目蓝图、项目实施、项目验收、项目运维。其中项目运维是项目中的重要环节。针对本次客户反馈工作进行反思总结。_运维工作汇报不足

推荐文章

热门文章

相关标签