解决微信云托管Readiness probe failed: dial tcp xx.xx.xx.xx:xxx: connect: connection refused
部署项目真的太可怕了,跨域问题、防火墙问题、线上数据库、线上redis 等,真的会让人破防。
·
查阅官方文档如图:
- 检查端口号,没问题
- 内存也够,
- CMD 命令也只有一条
上面三点我都没问题,就是部署不了,最后我反复排查,总结如下几点可能原因:
1. 线上数据库地址确保能连接,并且设置时区和编码
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://xxx/xxx?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: xxx
password: xxx
2. 线上数据库版本和本地数据库版本一致
本地调试数据库用8.0,线上就用8.0
3. 线上redis 必须修改配置,具体如下图:
- 修改绑定的地址:
- 配置redis 的密码
- 修改 redis 的保护模式,以及检查redis 的端口号
注意,如果你的服务器开启了防火墙,记得把你的端口号加到开放的端口列表
这里以 centos
进行讲解:
firewall-cmd --state # 查看是否开启防火墙
firewall-cmd --query-port=80/tcp # 查看80端口是否开放,其他端口同理
firewall-cmd --list-port # 查询以开放的端口列表
firewall-cmd --add-port=80/tcp # 添加端口80,格式为:端口/通讯协议
特别是服务安装了宝塔Linux的,它会帮你开启防火墙,一定要把端口号开放,同时服务器的安全组也要加上该端口
4. 如果你的代码中使用了 redisson 且配置信息是通过@ConfigurationProperties(prefix = “spring.redis”) 注解获取的,建议你把application.yml的 redis 也改为线上的,而不是只修改application-prod.yml,这个注解的读取方式,我也不太了解。
package com.yupi.usercenter.config;
import lombok.Data;
import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Data
public class RedissonConfig {
private String port;
private String host;
private String password;
@Bean
public RedissonClient redissonClient() {
// 1. Create config object
Config config = new Config();
String redisAddress = String.format("redis://%s:%s", host, port);
config.useSingleServer()
.setAddress(redisAddress)
.setPassword(password)
.setDatabase(0);
// 2. Create Redisson instance
// Sync and Async API
return Redisson.create(config);
}
}
5. 修改Dockerfile文件,这里以spring-boot项目为例
FROM maven:3.6.0-jdk-8-slim as build
# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src
# Build a release artifact.
RUN mvn package -DskipTests
EXPOSE 8080 # 这里的端口改成你自己项目的端口号
# 下面的文件名改成你项目的文件名
CMD ["java","-jar","/app/target/user-play-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]
其他项目参考官方文档的例子:https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/quickstart/template/official.html
写在最后
部署项目真的太可怕了,跨域问题、防火墙问题、线上数据库、线上redis 等,真的会让人破防。
更多推荐
已为社区贡献1条内容
所有评论(0)