代码,依赖hutool工具
hostip=`ifconfig eth0 | grep inet | awk '{print $2}' | awk -F: '{print $2}'`
#docker run --name java_app --net=host -d --env hostip="${hostip}" java:*** -jar hello.jar
java代码
public static final String IP;
static {
// docker 容器启动,获得不到宿主机的ip,通过shell脚本的环境变量传递。
String hostip = SystemUtil.get("hostip");
// 获取本机IP
if (StrUtil.isBlank(hostip)) {
OsInfo osInfo = SystemUtil.getOsInfo();
if (osInfo.isLinux()) {
NetworkInterface eth0 = NetUtil.getNetworkInterface("eth0");
List<InterfaceAddress> interfaceAddresses = eth0.getInterfaceAddresses();
hostip = interfaceAddresses.get(0).getAddress().getHostAddress();
} else if (osInfo.isMac()) {
hostip = NetUtil.getLocalMacAddress();
} else if (osInfo.isWindows()){
HostInfo hostInfo = SystemUtil.getHostInfo();
hostip = hostInfo.getAddress();
}else{
hostip = "ip未识别系统";
}
}
IP = hostip;
}