Мне нужно S SH Туннель в мою сеть университетов для работы над проектом через базу данных MySQL (в отличие от физического присутствия в школе и использования сети).
Я могу получить доступ к сервер со следующими инструкциями (или через удаленный проводник VSCode):
ssh -L 4444:abc.university.ca:443 login.university.ca
ssh -p 4444 'your_username'@localhost
, и мне предлагается ввести мой пароль.
Я также могу подключиться к базе данных из MySQL Workbench S SH Tunnel.
Однако я хочу разрабатывать локально на своей машине.
Я настроил Docker Контейнер с сервером Apache PHP, поэтому я не мне нужно вручную скопировать мои файлы на сервер через терминал.
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"
Затем я пытаюсь соединиться с базой данных через соединение. 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());
}
?>
Моя проблема заключается в том, что когда я устанавливаю sh туннель S SH через терминал, мое приложение в контейнере 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
Мой вопрос: как я могу открыть туннель S SH из моего контейнера, чтобы мой локальный сервер apache - php мог подключиться к базе данных, которая в сети моей школы?