当前位置: 首页 > 知识库问答 >
问题:

java.net.未知主机异常:host.docker.internal:名称或服务在AWS EC2上未知

上官树
2023-03-14

在AWS EC2 T2上部署停靠的Spring Boot应用程序时,我遇到了这个“java.net.UnknownHostException:host.docker.internal:Name或service not known”问题。微实例。由于此错误,spring启动应用程序无法启动。

但奇怪的是,我没有在应用程序的任何地方使用变量“host.docker.internal”:不在代码中,不在yaml文件中,不在. env文件中:

$ sudo grep -Rl "host.docker.internal" ~
/home/ec2-user/.bash_history

当我运行以下命令时,它只显示上一个搜索命令:

$cat /home/ec2-user/.bash_history|grep"host.docker.internal"

在本地,我使用Windows 10进行开发,我可以成功地使用docker-compose启动堆栈。

以下是EC2实例操作系统版本信息:

$ cat /etc/*release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Amazon Linux release 2 (Karoo)

下面是我在EC2实例上使用的docker compose文件:

version: '2'
services:
  backend:
    container_name: backend
    image: 'dockerhubuser/backend:0.0.4'
    ports:
      - '8080:8080'
    volumes:
      - /var/log/backend/logs:/var/log/backend/logs
      - ./backend-ssl:/etc/ssh/backend
    env_file:
      - .env
    depends_on:
      - mysql
      - redis
  redis:
    container_name: redis
    image: 'redis:alpine'
    ports:
      - '6379:6379'
    volumes:
      - $PWD/redis/redis-data:/var/lib/redis
      - $PWD/redis/redis.conf:/usr/local/etc/redis/redis.conf
  mysql:
    container_name: mysql
    image: 'mysql:8.0.21'
    ports:
      - '3306:3306'
    environment:
      MYSQL_DATABASE: dbname
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: dbpass
      MYSQL_ROOT_PASSWORD: dbrootpass
    volumes:
      - ./my_volume/mysql:/var/lib/mysql
volumes:
  my_volume:

这是我的。EC2实例上的env文件:

SERVER_PORT=8080
KEY_STORE=/etc/ssh/backend/keystore.p12
KEY_STORE_PASSWORD=keystorepass
REDIS_HOST=redis
REDIS_PORT=6379
DB_HOST=mysql
DB_PORT=3306
DB_USERNAME=dbuser
DB_PASSWORD=dbpass

我很确定这个. env文件是在使用“docker-compose up”启动堆栈时使用的,因为当我更改它时,我可以看到日志中的SERVER_PORT与此文件匹配。

2021-01-02 20:55:44.870[主要]信息o.s.b.w.e.tomcat。TomcatWebServer-Tomcat已初始化端口:8080(https)

但是我不断收到抱怨“host.docker.internal”的错误。

以下是我尝试过但不起作用的事情:

  1. 在property spring中对db主机进行硬编码。数据源。应用程序中的url。yml

172.17.0.1主机。码头工人。内部的

ip-172-31-33-56.us-east-2.compute.internalhost.docker.internal

有人能看看吗?感谢任何帮助。

共有1个答案

巢嘉志
2023-03-14

它在Ubuntu 20.04上工作,在将“172.17.0.1host.docker.internal”添加到 /etc/hosts文件后。确保docker引擎版本为20.10-beta1或更高版本。

 类似资料:
  • 您好,我正在尝试获取rss源,代码如下: 它由和AsyncTask包装,我得到了这个日志: 有人知道吗?我也试过google news rss feed(https://news.google.com/news/rss/headlines/section/topic/WORLD?ned=us 方法parseFeed():

  • 我正在尝试使用Apache Http组件4.5.1使用Instagram进行oauth登录,但未能成功获取访问令牌。 我很确定这是库本身的问题,因为如果我卷曲,我会得到我想要的结果。 所以,我尝试了几种不同的发布调用方式,但它们都给我相同的结果,所以我将发布我发现的最优雅的方式是使用Fluent-hc lib: 我得到的结果是: Java语言网未知后异常:api。instagram。com:名称或

  • 问题内容: 我正在尝试使用httplib将信用卡信息发送到authorize.net。当我尝试发布请求时,得到以下回溯: 我这样建立我的请求: 要添加另一层,它正在我们的开发服务器上运行,该服务器具有httplib 2.6,并且在httplib.HTTPSConnection中没有source_address参数。 任何帮助是极大的赞赏。 =============================

  • 我们有一个私人空间,并提供了一个内部API的访问权限,这样我们就可以从私人空间应用程序访问它。因此,我们开发了一个演示Java应用程序来测试它。当我们尝试用HTTP连接服务时,堆栈跟踪会像这样结束。 当我们ping私有空间中的相应IP时,我们可以看到它已启动。但是当我们试图从Java应用程序中访问服务时,它就像上面那样结束了。 Java 代码是这样的: 有没有人有任何想法来解决这个问题? 谢谢你。

  • 我在JMeter上运行测试脚本时遇到过这种错误? java.net.unknownHostException:h2ebiz-testat java.net.inet6addressimpl.lookupAllHostAddr(本机方法)位于java.net.inetAddress.2.lookupAllHostAddr(未知源)位于java.net.inetAddress.getAddress.g

  • 问题内容: 当我尝试将网页加载到终端时,它给出了错误。 我的PC上有互联网,并尝试通过家庭互联网连接。因此,我这里没有任何代理人参与。 并再次尝试,但并不幸运。 但是,如果我使用IP代替域名,则可以正常工作。 有什么线索吗? 问题答案: 问题是: 启用IPV6 DNS服务器错误 这是我的解决方法: IPV6禁用 开放终端 键入并输入登录为超级用户 输入root密码 键入将目录更改为 键入以在那里创