Я работаю над простым проектом с 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. Заранее спасибо ...