游戲推廣網(wǎng)站制作seo的基本步驟包括哪些
微信云托管
🚨推薦:微信云托管:基本使用指南
確實是個好平臺,部署個項目很簡易,免去了很多運維上的事情。
一、微信云托管 github 流水線配置 和 端口號
- 首先,這里的
主體(宿主機)
,指的就是你的代碼本身,可以理解為有一個服務器拉取了你的代碼。
- 例如:Dockerfile文件中,指令:
COPY src /demo-server/src
中的src目錄,就是代碼路徑中的src目錄。
- 編寫Dockerfile文件(根據(jù)Dockerfile,創(chuàng)建鏡像,啟動容器)
- 例如:如何寫一個Dockerfile文件?
# 選擇構(gòu)建用基礎鏡像。如需更換,請到[dockerhub官方倉庫](https://hub.docker.com/_/java?tab=tags)自行選擇后替換。
FROM maven:3.6.0-jdk-8-slim as build
# 指定構(gòu)建過程中的工作目錄
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, 選用國內(nèi)鏡像源以提高下載速度
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"]
- 明白項目,采用哪個端口號。
- 微信云托管-流水線配置、Dockerfile、服務配置都會有端口號,要明確配置的端口號是哪個。
- http 80 和 https 443 ,這兩個協(xié)議默認的端口,大家都知道,但是也很容易忽略!
- Dockerfile文件和要部署的項目目錄,同級目錄才可。(可以通過 目標目錄 來鎖定目錄位置。)
🎈參考官方:https://github.com/WeixinCloud/wxcloudrun-springboot
二、如何使用服務 基礎信息-環(huán)境變量 ?
在微信云托管中,通過配置環(huán)境變量,你可以向容器傳遞需要的配置信息。這類似于
在 Docker 中使用 -e 或 --env 選項來設置環(huán)境變量,注意此處是類似,并不是等同于!。
微信云托管中的環(huán)境變量配置可能類似于以下 Docker 命令:
docker run -e KEY1=value1 -e KEY2=value2 -e ANOTHER_KEY=another_value my_image
上述命令中,-e 選項用于設置容器中的環(huán)境變量,KEY1、KEY2 和 ANOTHER_KEY 是環(huán)境變量的名稱,而 value1、value2 和 another_value 則是相應環(huán)境變量的值。
提醒一下,不同服務獲取環(huán)境變量的語法不同,例如:
SpringBoot 環(huán)境變量配置:
- SpringBoot 環(huán)境變量替換格式為:${xxx}
# 開發(fā)環(huán)境配置
spring:# 數(shù)據(jù)源配置datasource:type: com.alibaba.druid.pool.DruidDataSourcedriverClassName: com.mysql.cj.jdbc.Driverdruid:# 主庫數(shù)據(jù)源master:url: jdbc:mysql://${mysql_address}/holmes-center?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8username: rootpassword: ${mysql_address_password}
node 環(huán)境變量配置:
# 暫未實踐
const serverAddress = process.env.SERVER_ADDRESS;
三、如何 配置ngxin.conf 文件?
特意強調(diào)一下nginx,nginx.conf是無法動態(tài)獲取微信云托管的環(huán)境變量配置!微信云托管設置的這些環(huán)境變量可以在應用程序中讀取,不能再nginx配置文件讀取,同樣其他的一些中間件也是一樣!
Nginx.conf中的$xxx,獲取的是容器內(nèi)部的系統(tǒng)環(huán)境變量,如下:
location /prod-api/ {rewrite ^/prod-api(/.*)$ $1 break;# $host是容器系統(tǒng)的環(huán)境變量proxy_pass $host;
}
一開始我就以為微信云托管服務配置的環(huán)境變量就和 docker -env 參數(shù)一樣是的,給系統(tǒng)添加環(huán)境變量,就能給nginx.conf動態(tài)配置了,操作了半天也不管用。咨詢了半天總結(jié)出來就是:不同的工具和平臺而有所差異,微信云托管的環(huán)境變量 和 docker -env參數(shù)環(huán)境變量 ,在效果上,只能說是類似,不能說完全相同!
所以,微信云托管要是配置nginx服務,目前總結(jié)出兩種方式:
- 直接在nginx.conf或者Dockerfile文件中寫死就行,一般內(nèi)網(wǎng)域名啥的不會變化,也不用擔心暴露。
- 通過寫腳本,先將云托管的環(huán)境變量讀取到腳本中,再寫入到nginx.conf文件。
#!/bin/bash
# 讀取微信云托管的環(huán)境變量
SERVER_ADDRESS=$SERVER_ADDRESS# 動態(tài)生成 Nginx 配置文件
echo "server {listen 80;server_name $SERVER_ADDRESS;# 其他配置...}" > /etc/nginx/conf.d/my_custom_config.conf# 啟動 Nginx
nginx -g 'daemon off;'
四、Webshell 使用
因為,經(jīng)常碰到兩個服務之間調(diào)不通,所以用好Webshell很方便。
五、內(nèi)網(wǎng)地址
服務的內(nèi)網(wǎng)地址,要根據(jù)聲明暴露的端口號來,并且不是https協(xié)議,而是http協(xié)議!
舉個例子:
假如,內(nèi)網(wǎng)地址為dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com,并且暴露的端口是8080端口,那么正確代理配置應該如下:
# 生產(chǎn)環(huán)境
location /prod-api/ {rewrite ^/prod-api(/.*)$ $1 break;# 根據(jù) 微信云托管后臺服務內(nèi)網(wǎng) 配置proxy_pass http://dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com:8080/;
}
而不是直接代理到 “https://dlnmpwnf.holmes-center-server.hahsntqc.ie54110f.com” ,此處協(xié)議不是https,并且端口也不是443,應該是8080 。
一般內(nèi)網(wǎng)地址不會是https協(xié)議的,其次,端口與暴露的端口一致,并不是直接通過域名映射到指定的ip:端口的!
mpwnf.holmes-center-server.hahsntqc.ie54110f.com" ,此處協(xié)議不是https,并且端口也不是443,應該是8080 。
一般內(nèi)網(wǎng)地址不會是https協(xié)議的,其次,端口與暴露的端口一致,并不是直接通過域名映射到指定的ip:端口的!