首先,我通知您,我目前是软件开发的学生。因此,我恳求您对我的问题持宽容态度。
我正在码头化我的Java Web应用程序之一。在我的Windows 10主机(在localhost上连接)上运行正常。 但是我需要使我的Web应用程序可以从其他主机访问,就像在现实生活中那样。
[编辑] :在本文docker-compose assign lan ip to service中,他们在docker-compose.yml中使用了一些网络配置。但是正如我所说,我对它的理解不足以适应我的情况:/
当前,我只能从运行docker容器的主机访问我的Web应用,其网址为:“ http://localhost:8080/public/showAtlas”
我想在任何浏览器中使用以下网址访问我的Web应用程序:“ http://xxx.xxx.xxx.xxx:8080/public/showAtlas”,其中xxx.xxx.xxx.xxx是我可以在dockerfile中定义的公共IP地址或docker-compose.yml
用很少的配置行是可能的还是棘手的? 我想很多人都想将我的问题标记为重复,但是我没有找到这个简单用例的简单答案。
有人可以帮我解决这个问题吗?
我看了很多在线资源,但是解决方案对我来说太复杂了,无法适应我的情况。
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服务。
谢谢你们为您准备的时间!
答案 0 :(得分:1)
正如我从评论中得出的那样,这不是docker-compose问题!问题是您希望默认情况下无法从公共Internet访问“家庭”网络。您需要配置调制解调器以允许此操作。
答案 1 :(得分:0)
一种替代方法可能是使用隧道。如果您不打算部署生产,请尝试使用ngrok。 (https://ngrok.com/)
您要做的就是安装ngrok并运行
$ ngrok http 8080
它将为您提供一个可以临时使用的地址。
答案 2 :(得分:0)
实际上,这只是我的家庭网络造成的问题。 我租用了一个vps,使用vps的IP,它像一种魅力一样工作。 我不需要更改上述docker文件中的任何内容。 谢谢大家!