spring-boot - 如何通过 ip 地址访问 docker 服务
问题描述
我是新手,docker
我可能错过了很多,虽然我浏览了基本文档并且我正在尝试部署一个简单的 Spring Boot API
我已将我的API部署为docker-spring-boot
.jar文件,然后docker
使用以下命令安装并推送它:
sudo docker login
sudo docker tag docker-spring-boot phillalexakis/myfirstapi:01
sudo docker push phillalexakis/myfirstapi:01
然后我使用 docker命令启动API :run
sudo docker run -p 7777:8085 phillalexakis/myfirstapi:01
当我访问localhost:7777/hello我得到了想要的响应
这是我的Dockerfile
FROM openjdk:8
ADD target/docker-spring-boot.jar docker-spring-boot.jar
EXPOSE 8085
ENTRYPOINT ["java","-jar","docker-spring-boot.jar"]
基于此已回答的帖子,此命令获取ip address
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id
所以,我运行它,container_name_or_id = phillalexakis/myfirstapi:01
我收到了这个错误
Template parsing error: template: :1:24: executing "" at <.NetworkSettings.Networks>: map has no entry for key "NetworkSettings"
如果我设法以某种方式获得IP
意愿,我可以访问它并得到相同的响应吗?
这就是我的想法:ip:7777/hello
解决方案
您使用的是图像名称而不是容器名称。
通过执行获取容器名称docker ps
。
容器 ID 是第一列中的值,容器名称是最后一列中的值。您可以同时使用两者。
然后,当您拥有 IP 后,您将能够访问您的 API IP:8085/hello
,而不是IP:7777/hello
7777 端口在 Docker 主机上可用,并映射到容器上的 8085 端口。如果您直接访问容器 - 当您使用其 IP 地址时,您需要使用容器公开的端口。
还有另一种选择:
您可以在启动时通过指定--name
参数为容器命名:
sudo docker run -p 7777:8085 --name spring_api phillalexakis/myfirstapi:01
现在,从您的 Docker 主机,您可以使用该名称访问您的 API:spring_api:8085/hello
推荐阅读
- python - 定时器在 Tkinter 中没有更新,除非在最后
- java - 为什么我可以对 Runnable 和 Supplier 功能接口使用相同的 lambda?
- amazon-web-services - 跨 AWS 账户共享您的目录
- html - GrapesJS 如何实现全局块
- javascript - Javascript减少以产生总成本不起作用
- wildcard - Excel VBA 值通配符不返回查找粗体函数的结果
- reactjs - TypeError:无法在渲染视图中读取 null 的属性“投票”
- sql - 如何在此 SQL 查询中获得补码?
- c++ - 不抛出 std::out_of_range 异常
- r - 更改 r 中聚合函数的输出