Настроить MySql для различных сред и развернуть в Google App Engine через IntelliJ
Я использую IntelliJ IDE для разработки сервисов Spring Boot с Maven и использую плагин Google Cloud Tools для развертывания в App Engine Flexible. Пока я использую следующее (для подключения к локальной сети) и запускаю приложение. локально работает нормально (в application.properties).
spring.datasource.url = JDBC: MySQL:// локальный:3309/ тест
Тем не менее, когда я пытаюсь развернуть в GAE со следующим (в application.properties),
spring.datasource.url = JDBC: MySQL:// Google/ тест cloudSqlInstance=[облако SQL-экземпляр]& SocketFactory = com.google.cloud.sql.mysql.SocketFactory
при попытке построить проект перед загрузкой в GAE выдается исключение UnknownHostException: "google".
Вопросы:
Как я могу создать различные конфигурации для различных сред (dev (локальная) / qa(gae) / production(gae)) и развернуть в этих средах с соответствующими значениями среды?
Выполняя сборку из IDE, она проверяет строку подключения к БД (которая указывает на экземпляр SQL sql) и выдает исключение, если оно недостижимо (однако оно будет из среды QA / Prod, если сборка будет успешной). Как решить этот случай?
Любая помощь по этому вопросу будет принята с благодарностью.
Заранее спасибо.
1 ответ
Вам нужно использовать Spring Profiles. Пожалуйста, прочитайте всю информацию в документации для подробного объяснения.
Кратко:
Профили Spring предоставляют способ разделения частей конфигурации вашего приложения и делают его доступным только в определенных средах.
Теперь перейдем к проблеме. Это можно решить, введя "локальный" профиль для своей разработки и оставив профиль "по умолчанию" для использования в производстве (GAE).
application.properties
# this file is for the "default" profile that will be used when
# no spring.profiles.active is defined. So consider this production config.
spring.datasource.url=jdbc:mysql://google/test?cloudSqlInstance=[cloud-sql-instance]&socketFactory=com.google.cloud.sql.mysql.SocketFactory
application-local.properties
# this file is for the "local" profile that will be used when
# -Dspring.profiles.active=local is specified when running the application.
# So consider this "local" development config
spring.datasource.url=jdbc:mysql://localhost:3309/test
# In this file you can also override any other property defined in application.properties, or add additional ones
Теперь для запуска приложения во время разработки все, что вам нужно указать в IntelliJ в конфигурации запуска, - это -Dspring.profiles.active=local
под VM options
или, если вы используете конфигурацию запуска "Spring Boot", вы можете просто добавить локальный в Active Profiles
поле.
А в GAE не указывайте никаких профилей вообще, и будут использоваться значения по умолчанию.