Развертывание контейнеров mysql + springboot docker в AWS ECS - PullRequest
0 голосов
/ 02 августа 2020

Я работаю над простым проектом с mysql + springboot с использованием контейнера docker, и я могу работать на своем локальном компьютере без каких-либо проблем. Я попытался перевести те же контейнеры в AWS ECS в рабочее состояние, но столкнулся с несколькими проблемами. Я исследовал несколько документов и блогов, но не смог получить правильный контент, чтобы это работало.

Я использовал нижеприведенное, чтобы установить mysql на моем локальном компьютере с именем контейнера «mysqlcontainer»

docker run --restart always --name mysqlcontainer --net dev-network -v /Users/myuser/Develop/mysql_data/8.0:/var/lib/mysql -p 3306:3306 -d
-e MYSQL_ROOT_PASSWORD=password mysql:8.0

После того, как mysql встал, я выполнил следующую команду, чтобы запустить приложение Springboot. Это простая служба Springboot, которая выполняет операцию CRUD с mysql.

docker run -d -p 8061:8061 --name user-mysqlapp --net dev-network
--link mysqlcontainer user-mysql

mysql имя контейнера - «mysqlcontainer», который работает в сети «dev-network», и я использовал этот контейнер и имя сети во второй команде docker, чтобы запустить приложение springboot, поскольку оба контейнера должны взаимодействовать друг с другом в одной сети.

вот файл docker для приложения springboot.

FROM openjdk:8-jdk-alpine 
EXPOSE 8061 ARG
JAR_FILE=target/user-mysql.jar 
ADD ${JAR_FILE} user-mysql.jar
ENTRYPOINT ["java","-jar","user-mysql.jar"]

Вот источник данных, который используется в application.yml в приложении springboot.

 datasource:
    url:  jdbc:mysql://mysqlcontainer:3306/sample
    username: dummy
    password: password
    driver-class-name:  com.mysql.jdbc.Driver

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

CREATE USER 'dummy'@'%' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON * . * TO 'dummy'@'%';
create database sample;
use sample;

У меня нет проблем с выполнением этой настройки на моем локальном компьютере, и я сделал pu sh образ приложения springboot в dockerhub для использования в AWS ECS.

Описание проблемы:

Если я запустил контейнер mysql только в ECS, я смогу запустить его и подключиться с помощью mysql разработчика f из моего местного. но если я попытаюсь запустить образ приложения springboot, он не будет правильно связываться с контейнером mysql. Я пробовал использовать тип экземпляра FARGATE с сетевым режимом awsvp c, где мне не удалось указать ссылку на контейнер mysql. Я попытался создать одно определение задачи, в котором были добавлены оба контейнера, и оба они успешно работали, но в журнале загрузки Spring говорится, что невозможно создать связь с контейнером mysql.

Может кто-нибудь, пожалуйста, поделитесь некоторыми информацию, чтобы установить эту настройку в aws ecs или поделиться какой-либо ссылкой / учебником / блогом, где я могу увидеть, как эта установка приложения mysql + springboot может выдержать aws ecs? Если я могу установить эти контейнеры, мне нужно создать / прикрепить том для сохранения данных в aws. Заранее спасибо ...

1 Ответ

0 голосов
/ 06 августа 2020

Я могу успешно настроить эту весеннюю загрузку + mysql в ECS. Ниже приведены шаги, которые были выполнены.

  1. Создайте одно определение задачи, в котором сначала добавьте mysql контейнер, где укажите необходимую переменную env в mysql контейнер.
  2. Добавьте еще одну пружинную загрузку контейнер, в котором установите контейнер порядка зависимостей как контейнер mysql с условием «START».
  3. Создать новый кластер
  4. Создайте службу в этом кластере, а затем добавьте это определение задачи в службу.

Поскольку я использовал тип fargate, мы не можем использовать ссылку для ссылки на другой контейнер, но вместо этого я использовал IP-адрес 127.0.0.1 в URL-адресе источника данных yml приложения загрузки Spring, чтобы он ссылался на локальный хост в той же сети. Это решает проблему связывания контейнеров, и я уверен, что у нас был бы лучший вариант, но пока я использую этот вариант.

 datasource:
    url:  jdbc:mysql://127.0.0.1:3306/sample
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...