Я пытаюсь подключить веб-сервер, который работает в контейнере Apache Tomcat, к базе данных MySQL, которая запускает другой контейнер. Для этого я использую механизм привязки от Docker.Docker - подключить веб-сервер Apache Tomcat к серверу MySQL
docker run -it --name ${CONTAINER_NAME} --link db:db -p 8080:8080 -d tomcat
После запуска контейнера я вижу, что контейнеры соединены и переменные окружения отображаются правильно.
Для подключения к веб-приложение, которое выполняется в контейнере Tomcat в базу данных, я использую следующий файл конфигурации:
<Context>
<Resource
name="jdbc/MYDB"
type="javax.sql.DataSource"
auth="Container"
username="user"
password="password"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://${DB_PORT_3306_TCP_ADDR}:${DB_PORT_3306_TCP_PORT}/epcis?autoReconnect=true">
</Resource>
</Context>
Теперь проблема заключается в том, что я не могу установить соединение с поскольку переменные среды, открытые Docker, не распознаются в среде Tomcat.
Есть способ сделать эти переменные среды открытыми докером, видимыми для среды Apache Tomcat?
Проверьте, если контейнер mysql подвергается воздействию порта 3306. Затем вы можете ввести контейнер и использовать, например, telnet, чтобы узнать, могут ли контейнеры разговаривать друг с другом. – wsl
Они могут разговаривать друг с другом, я подтверждаю, что с помощью telnet. Проблема в том, что драйвер JDBC не знает значения $ {DB_PORT_3306_TCP_ADDR} и других переменных env. Об ошибке сообщается в журнале tomcat из моего веб-приложения. –
Вы можете использовать свойство env для передачи переменных окружения: https://docs.docker.com/reference/run/#env-environment-variables – wsl