gpt4 book ai didi

docker - 如何使一个简单的 docker 服务可以从外部主机访问

转载 作者:行者123 更新时间:2023-12-02 18:27:34 24 4
gpt4 key购买 nike

首先,我通知您,我目前是软件开发专业的学生。所以我请求你对我的问题的宽容。

我正在对接我的一个 java web 应用程序。它在我的 Windows 10 主机上运行良好,在 localhost 中连接。
但是我需要让我的 Web 应用程序可以从其他主机访问,就像我在现实生活场景中所做的那样。

[编辑]:在这篇文章中docker-compose assign lan ip to service ,他们在 docker-compose.yml 中使用了一些网络配置。但正如我所说,我对它的理解还不够,无法适应我的情况:/

目前,我只能从运行 docker 容器的主机访问我的 Web 应用程序,使用此 url:“http://localhost:8080/public/showAtlas

我想要的是我的网络应用程序可以在任何浏览器中使用如下 URL 访问:“http://xxx.xxx.xxx.xxx:8080/public/showAtlas”其中 xxx.xxx.xxx.xxx 是我可以在 dockerfile 或 docker-compose.yml 中定义的公共(public) IP 地址

这可能只需要很少的配置行还是很棘手?
我想很多人会想将我的问题标记为重复,但我没有找到这个简单用例的任何简单答案。

有人可以帮我解决这个问题吗?

我查看了许多在线资源,但解决方案太“复杂”,无法适应我的情况。

我的 springboot 应用程序的 Dockerfile:

FROM store/oracle/serverjre:8
VOLUME /tmp
ADD webapp/output/webapp.jar webapp.jar
ENTRYPOINT ["java", "-jar", "webapp.jar"]

我的数据库的 Dockerfile:
FROM postgres:latest
COPY db_wtc.sql /docker-entrypoint-initdb.d/init.sql

我的 docker-compose.yml:
version: '3.7'

services:
db-wtc:
build:
context: .
dockerfile: Dockerfile-db
container_name: cont-db-wtc
volumes:
- db_data:/var/lib/postgres/data
restart: unless-stopped
ports:
- 5432:5432
expose:
- 5432
environment:
POSTGRES_USER: admin_wtc
POSTGRES_PASSWORD: 123
POSTGRES_DB: db_wtc
networks:
- wtc-network

wtc:
depends_on:
- db-wtc
build:
context: .
dockerfile: Dockerfile
container_name: cont-wtc
ports:
- 8080:8080
expose:
- 8080
environment:
SPRING_DATASOURCE_USERNAME: admin_wtc
SPRING_DATASOURCE_PASSWORD: 123
SPRING_DATASOURCE_URL: jdbc:postgresql://db-wtc:5432/db_wtc
networks:
- wtc-network

networks:
wtc-network:

volumes:
db_data:

没有特别的错误。我只是无法从任何外部主机访问我的 docker 服务。

非常感谢你们的时间!

最佳答案

正如我从评论中得出的那样,这不是 docker-compose 问题!问题是您想从公共(public)互联网访问您的“家庭”网络,默认情况下这是不可能的。您需要配置调制解调器以允许这样做。

关于docker - 如何使一个简单的 docker 服务可以从外部主机访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57979333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com