【发布时间】:2020-07-13 15:21:42
【问题描述】:
我需要通过 SSH 隧道进入我的大学网络,以通过 MySQL 数据库处理项目(而不是实际在学校并使用网络)。
我可以使用以下说明(或通过 VSCode 远程资源管理器)访问服务器:
ssh -L 4444:abc.university.ca:443 login.university.ca
ssh -p 4444 'your_username'@localhost
他们会提示输入我的密码。
我还可以从 MySQL Workbench SSH 隧道连接到数据库。
但是我想在我的机器上进行本地开发。
我已经设置了一个带有 Apache PHP 服务器的 Docker 容器,因此我不必通过终端手动将我的文件复制到服务器。
Dockerfile
FROM php:7.2-apache
# Use the default production configuration
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
#get mysqli
RUN docker-php-ext-install mysqli
COPY src/ /var/www/html/
docker-compose.yml
version: "3.2"
services:
web:
build: php-apache
container_name: php-apache-server
ports:
- "8080:80"
然后我尝试通过 connection.php 连接数据库
<?php
/* DB Credentials */
$DB_SERVER = 'xxxxxxxxxxxx';
$DB_USERNAME = 'xxxxxxxxxx';
$DB_PASSWORD = 'xxxxxxxx';
$DB_NAME = 'xxxxxxxxx';
$PORT = xxxx;
/* Attempt to connect to MySQL database */
$link = mysqli_connect($DB_SERVER, $DB_USERNAME, $DB_PASSWORD, $DB_NAME);
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>
我的问题是当我通过终端建立 SSH 隧道时,Docker 容器中的应用程序无法连接到 MySQL 数据库。我得到:
PHP Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /var/www/html/connection.php on line 11
我的问题是,如何从我的容器中打开 SSH 隧道,以便我的本地 apache-php 服务器可以连接到我学校网络上的数据库?
【问题讨论】:
-
你做两件事之一 - 在你的容器中安装 ssh 或创建一个你的本地容器可以链接到的 ssh 容器。