Это не тот же вопрос, что и: как я могу получить доступ к базе данных mysql, работающей в контейнере Docker?У меня есть приложение весенней загрузки, запущенное в tomcat в контейнере, созданное из официального образа tomcat.
Dockerfile
FROM tomcat:latest
RUN rm -f -R $CATALINA_HOME/webapps/ROOT
COPY build/libs/web-1.0-SNAPSHOT.war $CATALINA_HOME/webapps/web.war
COPY context.xml $CATALINA_HOME/conf/context.xml
Когда я хочу запустить Docker-контейнер, я говорю:
docker build .
#it prints out the newly generated container image id such as 08fc6cbf7759
docker run -p 8888:8080 08fc6cbf7759
Затем я получаю кучу трассировок стека, связанных с тем, что БД не получает никаких пакетов:
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1699)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:573)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:304)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:224)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:1012)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveNamedBean(DefaultListableBeanFactory.java:981)
Если я перетащу файл WAR в мой локально работающий tomcat вместо запуска докераобраз, он разворачивается нормально, никаких проблем с подключением к БД.Так что я знаю, что должно быть что-то для докера, которое ограничивает его способность контактировать с чем-либо снаружи.