Контейнеры Docker для мультимодульного проекта Spring Boot Maven - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть мультимодульный проект Maven (модуль углового интерфейса + модуль бэкенда SpringBoot), находящийся в том же проекте Parent Maven. Я хочу запустить приложение в Docker Multi-Containers (Docker-контейнер для Frontend + Docker-контейнер для Backend + Docker-контейнер для базы данных). Как я могу использовать Docker Compose для запуска мульти-контейнеров Docker?

Я создал «docker-compose.yml» в родительском проекте, и в каждом модуле я добавил «Dockerfile».
Вот структура моего проекта

enter image description here

Файл docker-compose.yml

version: '3'

services:
  docker-container-application-mariadb:
    image: mariadb:latest
    environment:
      - MYSQL_ROOT_PASSWORD=*****
      - MYSQL_DATABASE=*******
      - MYSQL_USER=*******
      - MYSQL_PASSWORD=*******
    volumes:
      - /data/application-mariadb
  docker-container-application-backend:
    image: docker-image-application-backend
    build:
      context: ./application-backend
      dockerfile: Dockerfile
    depends_on:
      - docker-container-application-mariadb
    ports:
      - 8087:8080
    volumes:
      - /data/application-backend

Backend Dockerfile:

FROM openjdk:8
EXPOSE 8080
ADD target/application_backend.jar application_backend.jar
# Run the jar file
ENTRYPOINT ["java", "-jar", "application_backend.jar"]
ENTRYPOINT ["java", "-jar", "application_backend.jar"]

Когда я бегу:

docker-compose up

вот ошибка, которую я получаю:

Step 4/6 : ADD $PWD/application-backend/target/application_backend.jar application_backend.jar
ERROR: Service 'docker-container-application-backend' failed to build: ADD failed: stat /var/lib/docker/tmp/docker-builder971325573/esysync-backend/target/application_backend.jar: no such file or directory

Ошибка после обновления кода: enter image description here

Ошибка после обновления кода, предложенного @Milah: enter image description here

1 Ответ

0 голосов
/ 04 апреля 2019

Это должно работать.У меня нет среды для тестирования, поэтому, если вы получите ошибки, дайте мне знать, и я их исправлю.

Поместите этот файл Docker в корень проекта (того же уровня, что и docker-compose).

Dockerfile:

FROM maven:3.6.0-jdk-8-alpine as build

WORKDIR /app

COPY . .

WORKDIR /app/application-backend

RUN mvn clean package -DskipTests=true

FROM openjdk:8

WORKDIR /app

COPY --from=build /app/application-backend/target/*.jar ./

EXPOSE 8080

# Run the jar file
ENTRYPOINT ["java", "-jar", "/app/application_backend.jar"]

Рядом с Dockerfile должен быть также файл игнорирования.

.dockerignore

application-frontend/

Вы должны изменить докер-составить файл следующим образом:

...
  docker-container-application-backend:
    image: docker-image-application-backend
    build:
      context: ./
      dockerfile: Dockerfile
...

Объявление dockerfile: Dockerfile является избыточным, его можно удалить.

...