docker部署springboot的Web应用

本文介绍如何在settings.xml中配置com.spotify插件组,安装IntelliJ IDEA的Docker插件,并通过Dockerfile配置应用端口,实现Docker与开发环境的无缝集成。


1、settings.xml配置文件中添加

  <pluginGroups>    
    <pluginGroup>com.spotify</pluginGroup>    
  </pluginGroups>  

2、IntelliJ IDEA安装docker插件


3、连接docker


4、Dockerfile,程序配置访问端口为8011,故开放8011端口


5、配置



6、Run



在使用 Docker 部署 Spring Boot 应用时,获取 IP 地址的方式会因部署环境的不同而有所变化。下面我将详细介绍几种常见场景下的 IP 获取方式,并给出对应的示例代码和解释。 --- ### ✅ 场景一:获取容器本身的 IP 地址(容器内部访问) 当 Spring Boot 应用运行在 Docker 容器内部时,你可以通过 Java 的网络 API 获取当前容器的 IP 地址。 #### 示例代码: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.net.InetAddress; import java.net.UnknownHostException; @RestController public class DockerIpController { @GetMapping("/container-ip") public String getContainerIp() { try { InetAddress inetAddress = InetAddress.getLocalHost(); return "Container IP Address: " + inetAddress.getHostAddress(); } catch (UnknownHostException e) { return "Unable to determine container IP address."; } } } ``` #### 解释: - `InetAddress.getLocalHost()` 会返回容器内部的 IP 地址(通常是 Docker 的虚拟 IP,例如 `172.x.x.x`)。 - 适用于容器内部服务自我识别 IP 的场景。 --- ### ✅ 场景二:获取宿主机 IP(容器访问宿主机) 如果你的容器需要访问宿主机(host),例如访问宿主机上的数据库或其他服务,可以使用以下方式获取宿主机的 IP: #### 示例代码: ```java @GetMapping("/host-ip") public String getHostIp() { try { // 宿主机默认网关是 172.17.0.1(Docker 默认网桥) InetAddress hostAddress = InetAddress.getByName("host.docker.internal"); return "Host IP Address: " + hostAddress.getHostAddress(); } catch (UnknownHostException e) { return "Unable to determine host IP address."; } } ``` #### 解释: - `host.docker.internal` 是 Docker 提供的特殊 DNS 名称,用于在容器中访问宿主机。 - 这个方法适用于 macOS 和 Windows 环境下的 Docker Desktop。 - 在 Linux 上,你需要手动配置 `--add-host=host.docker.internal:host-gateway` 来启用。 #### 启动命令示例(Linux): ```bash docker run -d --add-host=host.docker.internal:host-gateway -p 8080:8080 my-springboot-app ``` --- ### ✅ 场景三:获取外部访问 IP(外部访问容器) 如果你的应用部署在云服务器或公网服务器上,并希望获取外部访问该服务的公网 IP,可以通过以下方式: #### 示例代码: ```java @GetMapping("/public-ip") public String getPublicIp() { try { URL url = new URL("https://api.ipify.org"); BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream())); String publicIp = reader.readLine(); return "Public IP Address: " + publicIp; } catch (Exception e) { return "Unable to determine public IP address."; } } ``` #### 解释: - 使用第三方服务(如 `ipify.org`)获取当前服务器的公网 IP。 - 适用于需要暴露公网服务的场景。 --- ### ✅ 场景四:获取 Docker 容器的网络信息(通过 Docker 命令) 如果你希望在容器外部查看容器的 IP 地址,可以使用如下命令: ```bash docker inspect <container_id> | grep IPAddress ``` 输出示例: ```json "IPAddress": "172.17.0.2", ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值