【问题标题】:How do I connect to local oracle database from a project that is in a Docker container?如何从 Docker 容器中的项目连接到本地 oracle 数据库?
【发布时间】:2022-01-20 19:04:16
【问题描述】:

我在 Springboot 上安装了一个 rest api,它在一个 docker 容器内,问题是我想连接到我的本地数据库,但它没有连接我,如果有人知道我能做什么,我很感激它

docker-compose.yml

version: "3.7"
services:
  app:
    image: "bm_spring_boot:latest"
    build:
      context: ./BmApiRestV2/
      dockerfile: Dockerfile
    container_name: api_spring
    ports:
      - 8888:8080
    environment:
      - SPRING_DATASOURCE_URL=jdbc:oracle:thin:@//localhost:1521/xe
      - SPRING_DATASOURCE_USERNAME=system
      - SPRING_DATASOURCE_PASSWORD=root
    networks:
      spring-net:
        aliases:
          - spring-host
networks:
  spring-net:
    driver: bridge
    ipam:
      driver: default

exception

IO 错误:网络适配器无法建立连接 (CONNECTION_ID=ZXya/2jARQOjulME/+D4hA==)

【问题讨论】:

标签: oracle spring-boot docker


【解决方案1】:

"host.docker.internal" 在 Mac 上运行良好

ping host.docker.internal
PING host.docker.internal (192.168.65.2): 56 data bytes
64 bytes from 192.168.65.2: seq=0 ttl=37 time=0.712 ms

但不是在 linux 上。配置了不同的名称服务器。

cat /etc/resolv.conf

在您的情况下,我会简单地使用主机的 IP 地址(Oracle 正在运行的地方)。 比如运行alpine linux,连接Spring boot app

docker run --rm -ti alpine
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
14: eth0@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
curl http://10.0.1.24:14000/hello

Hello

【讨论】:

    猜你喜欢
    • 2023-03-19
    • 1970-01-01
    • 2021-05-22
    • 2022-01-21
    • 1970-01-01
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多