как получить доступ к контейнеру MySQL в Docker контейнере загрузки - PullRequest
0 голосов
/ 16 января 2019

у меня есть 2 файла докера

1. MySQL-dockerfile

 FROM mysql:5.5

 EXPOSE 3306

 ENV MYSQL_ROOT_PASSWORD root

 ENV MYSQL_DATABASE ToDoList
Команда

, используемая для построения dockerfiles, показана ниже

sudo docker build -t mysql-img  -f mysql-dockerfile .

sudo docker run -d --name mysqlcontainer -p 3030:3306 mysql-img

2. Java-dockerfile

FROM openjdk:8-jre-alpine

EXPOSE 9090

WORKDIR /usr/src

COPY target/*.war todoApp.war 

CMD ["java","-jar","todoApp.war"]
Команда

, используемая для построения dockerfiles, показана ниже

 sudo docker build -t java-img  -f java-dockerfile .
 docker run --name javacontainer -d -p 4040:9090 java-img

Приложение весенней загрузки состоит из URL-адреса jdbc следующим образом

spring.datasource.url = JDBC: MySQL: // локальный: 3030 / ToDoList

Я не могу запустить проект, потому что приложение весенней загрузки в Docker не может подключиться к базе данных mysql, которая находится в другом контейнере.

одно решение, которое я нашел, - это объединить два док-контейнера в одну докерную сеть или контейнер док-станции ссылок. Может кто-нибудь, пожалуйста, предложите хорошее решение, измененную команду запуска Docker и измененный URL-адрес JDBC.

1 Ответ

0 голосов
/ 16 января 2019

Поместите их в одну сеть и используйте имена контейнеров в качестве имен хостов:

docker network create foo
docker run --network=foo --name mysqlcontainer -d mysql-img
docker run --network=foo --name javacontainer -d java-img

Не открывать порты - они автоматически отображаются между контейнерами внутри сети.

Для подключения внутри используйте mysqlcontainer:3306 и javacontainer:9090.

Чтобы подключиться с хоста, вам понадобится открыть порт.

...