Я могу создать докер, содержащий код моего проекта. У него есть модульные тесты, которые не проходят, потому что нет соединения с базой данных. Я могу войти на сервер с центральной базой данных, содержащей наши тестовые данные, используя ключ SSH и учетные данные. Я не могу установить соединение между докером и БД.
За последние два дня я пробовал несколько разных предложений, выцарапывая и перезапуская эту часть файла Dockerfile. Я искал на YouTube учебники, Stackexchange - для ответов и форумы докеров - для справки.
Если есть пошаговое руководство, оно спрятано, я бы тоже хотел это увидеть!
Docker-compose имеет следующее:
services:
app:
build:
context: .
dockerfile: .docker/Dockerfile
args:
APP_PATH: ${APP_PATH}
image: laravel-docker
env_file: .env
ports:
- 8080:80
# We need to expose 443 port for SSL certification.
- "443:443"
volumes:
- .:/var/www/jumbledown
Внутри контейнера я могу связаться с хостом удаленной БД следующим образом:
ssh -4 -R 8888:localhost:8888 [devname]@NN.NN.NN.NN -i ~/ident -p [portnumber]
где: - devname - мой логин. - NN.NN.NN.NN - IP-адрес хоста БД. - id - это файл, содержащий ключ SSH, который копируется с помощью команды копирования, содержащейся в Dockerfile.
Файл Docker собран из FROM php:7.1.8-apache
и теперь устанавливает МНОГО дополнительных компонентов, включая Xdebug. Слишком долго просто копировать и вставлять, и я не уверен, какие части актуальны;Я могу предоставить по запросу.
В идеале, я хотел бы иметь возможность использовать Dockerfile для настройки SSH-туннеля, обслуживающего БД в док-контейнере. Прямо сейчас я бы согласился с возможностью вручную установить соединение внутри контейнера.
Обновление В соответствии с вопросами в ответе, конечный результат, который мне нужно создать, состоит из несколькиху разработчиков должны быть локальные докеры, а у каждого - туннель к центральной базе данных, содержащей данные тестирования, для нашего использования, пока мы пишем код в течение дня.