【发布时间】:2020-03-23 22:14:23
【问题描述】:
目前,我有一个奇怪的问题,当我尝试从 Apache 容器连接到 Oracle 数据库容器时,我会从 oci_error 方法中得到“TNS: Connect Timeout Occurred”。我的PHP代码如下:
<?php
$objConnect = oci_connect('SYSTEM', 'xxxxxxxxxx', 'x.x.x.x/xxxxx');
if($objConnect)
{
echo "from Docker Oracle Server Connected" . PHP_EOL;
}
else
{
echo "Cannot connect to Oracle Server" . PHP_EOL;
var_dump( oci_error() );
}
?>
我运行 Oracle 数据库的 docker 代码是:
docker run --name orcl_12c_r_1 -p 1521:1521 -p 5500:5500 -e ORACLE_SID=xxxxx oracle/database:12.1.0.2-se2
我用这个 docker-compose.yml 启动了我的 Apache:
version: '3'
services:
oraclelinuxphp:
build:
context: ./oraclelinuxphp
dockerfile: Dockerfile # install httpd and PHP here.
ports:
- "8080:80"
volumes:
- ./web:/var/www/html
但是,当我将 network_mode 主机添加到 docker-compose.yml 时,此问题已解决:
version: '3'
services:
oraclelinuxphp:
build:
context: ./oraclelinuxphp
dockerfile: Dockerfile # install httpd and PHP here.
ports:
- "8080:80"
volumes:
- ./web:/var/www/html
network_mode: "host"
说到 Docker,我还是个菜鸟,从这里开始,我相信我在 Docker 中缺少一些东西。我可以毫无问题地从桌面上的 Oracle SQL Developer 应用程序连接到服务器上容器中的 Oracle 数据库。另外,我也尝试了非Docker路由,非Docker PHP也可以连接到这个Oracle数据库。
所以我相信这是 Docker 问题。我在这里想念什么?在这种情况下,如何让 Apache 容器连接到 Oracle 数据库容器?
注意:我正在使用:
- centos-release-7-7.1908.0.el7.centos.x86_64
- Docker 版本 19.03.8,构建 afacb8b
- 来自https://github.com/oracle/docker-images 的 Oracle 数据库 12.1.0.2
【问题讨论】:
标签: oracle apache docker docker-compose oracle12c