Я боролся с этим уже неделю. У меня есть задание, в котором я должен смонтировать полную среду 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 и т. Д., Что я и буду делать в будущем).
Спасибо.