Как докернизировать приложение Spring Boot + React + MySQL? - PullRequest
0 голосов
/ 26 апреля 2018

Я боролся с этим уже неделю. У меня есть задание, в котором я должен смонтировать полную среду CI, что означает: Jenkins с интеграцией GitHub (простым нажатием можно запустить конвейер), Sonarqube, Testlink, Mantis Bug tracker, Artillery, JUnit, MySQL и используемый бэкэнд Spring Boot API. по интерфейсу React. Я протестировал инструменты локально и отдельно, и они работают. Но когда я пытаюсь их контейнировать (для этого мне нужно контейнировать MySQL, Sonarqube, Mantis и Testlink, но я хочу сделать это со всем), вот тогда я теряюсь. Я искал учебники, и я многому научился, но не могу найти, как это сделать.

Я начинаю с dockerization базы данных MySQL и подключаю к ней мой Spring Boot API. Оно работает. Теперь я хочу собрать бэкэнд (mvn clean install) внутри контейнера Docker и развернуть его, но в процессе сборки я получаю сообщение об ошибке при попытке подключиться к MySQL, потому что я делаю это в Dockerfile и контейнере Spring не знает о MySQL. Я не знаю, как создать образ после запуска контейнера базы данных. Я почти уверен, что должен использовать docker compose, но я не знаю, где и как поставить процесс сборки Maven.

Полагаю, мне нужно сделать что-то подобное, так что бэкэнд знает о базе данных. И в application.properties (внутри проекта весенней загрузки) я должен указать соединение с БД следующим образом: spring.datasource.url = jdbc:mysql://mysql-db:3306/db_name?useSSL=false

version: '3'
services:
  db:
    image: mysql:5.7
    volumes:
      - data-mysql:/var/lib/mysql
    container_name: mysql-db
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: 'root'
      MYSQL_USER: 'test'
      MYSQL_PASS: 'pass'
  app:
    image: app-0
    container_name: app
    ports:
      - 8081:8081
    depends_on:
      - db
volumes:
  data-mysql: 

Приложение-0 создается с этим Dockerfile, который пытается построить бэкэнд, но в этот момент у бэкэнда нет базы данных, поэтому сборка завершается неудачно:

FROM maven:3.5.3-alpine
WORKDIR /usr/src
COPY . .
RUN mvn clean install

COPY target/spring-boot-backend.jar spring-boot-backend.jar
EXPOSE 8081
ENTRYPOINT ["java", "-jar", "spring-boot-backend.jar"]

Буду признателен за любой полный пример того, что я пытаюсь сделать (также если это связано с jenkins, testlink и т. Д., Что я и буду делать в будущем).

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...