Я вытащил образ MySQL Docker и запустил контейнер командой:
docker run --name myapp-mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=mydb -p 3306:3306 -d mysql:latest
На этом этапе SpringBoot локально работает.Это связано с mysql:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
Теперь я хочу, чтобы приложение springBoot также находилось в отдельном док-контейнере, на том же сервере.Для этого я использую Dockerfile:
FROM openjdk:8-jdk-alpine
ADD target/myapp.jar myapp.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "myapp.jar"]
Я запускаю это изображение с:
docker run --name myapp -p 8080:8080 -it myapp:latest
Теперь контейнер springBoot не может найти контейнер myslq.Я пытаюсь:
docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest
Но опять же он не может подключиться к контейнеру MySQL.Как я могу подключить контейнер springBoot к контейнеру mysql?
Я также попытался изменить application.properties на:
spring.datasource.url=jdbc:mysql://myapp-mysql:3306/mydb
spring.datasource.username=root
spring.datasource.password=root
и запустить springBoot с помощью:
docker run --name myapp -p 8080:8080 --link=myapp-mysql:mysql -it myapp:latest
Сноваон не может подключиться к БД:
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.