Merge pull request #2078 from yanyu510/docker_env

fix: docker环境下sip信令IP问题
This commit is contained in:
648540858 2026-04-13 10:24:59 +08:00 committed by GitHub
commit f38f0bebdd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 19 additions and 0 deletions

View File

@ -101,6 +101,8 @@ services:
- ./logs/wvp:/opt/wvp/logs/
environment:
TZ: "Asia/Shanghai"
# docker env
RUN_ENV: "docker"
# 流链接的IP
Stream_IP: ${Stream_IP}
# SDP里的IP

View File

@ -5,6 +5,7 @@ import com.genersoft.iot.vmp.conf.UserSetting;
import com.genersoft.iot.vmp.gb28181.bean.GbStringMsgParserFactory;
import com.genersoft.iot.vmp.gb28181.conf.DefaultProperties;
import com.genersoft.iot.vmp.gb28181.transmit.ISIPProcessorObserver;
import com.genersoft.iot.vmp.utils.EnvUtil;
import gov.nist.javax.sip.SipProviderImpl;
import gov.nist.javax.sip.SipStackImpl;
import lombok.extern.slf4j.Slf4j;
@ -174,6 +175,9 @@ public class SipLayer implements CommandLineRunner {
}
public String getLocalIp(String deviceLocalIp) {
if(EnvUtil.isDockerEnv()){
return sipConfig.getShowIp();
}
if (monitorIps.size() == 1) {
return monitorIps.get(0);
}

View File

@ -6,6 +6,7 @@ import com.genersoft.iot.vmp.gb28181.bean.Device;
import com.genersoft.iot.vmp.gb28181.bean.SipTransactionInfo;
import com.genersoft.iot.vmp.gb28181.utils.SipUtils;
import com.genersoft.iot.vmp.storager.IRedisCatchStorage;
import com.genersoft.iot.vmp.utils.EnvUtil;
import com.genersoft.iot.vmp.utils.GitUtil;
import com.genersoft.iot.vmp.utils.IpPortUtil;
import gov.nist.javax.sip.message.SIPRequest;
@ -334,6 +335,9 @@ public class SIPRequestHeaderProvider {
public Request createAckRequest(String localIp, SipURI sipURI, SIPResponse sipResponse) throws ParseException, InvalidArgumentException, PeerUnavailableException {
if(EnvUtil.isDockerEnv()){
localIp = sipLayer.getLocalIp(localIp);
}
// via
ArrayList<ViaHeader> viaHeaders = new ArrayList<ViaHeader>();
ViaHeader viaHeader = SipFactory.getInstance().createHeaderFactory().createViaHeader(localIp, sipConfig.getPort(), sipResponse.getTopmostViaHeader().getTransport(), SipUtils.getNewViaTag());

View File

@ -0,0 +1,8 @@
package com.genersoft.iot.vmp.utils;
public class EnvUtil {
public static boolean isDockerEnv() {
return "docker".equals(System.getenv("RUN_ENV"));
}
}

View File

@ -101,6 +101,7 @@ sip:
# 请不要使用127.0.0.1任何包括localhost在内的域名都是不可以的。
ip: 0.0.0.0
# [可选] 没有任何业务需求,仅仅是在前端展示的时候用
# [docker环境下必选] 在docker环境中运行时此配置为sip对外的ip地址 必须配置,否则无法正常使用
show-ip: 192.168.0.100
# [可选] 28181服务监听的端口
port: 5060