Как настроить GitHub Docker CI для запуска всех подмодулей - PullRequest
1 голос
/ 12 апреля 2020

Я новичок в Docker. У меня есть многомодульный проект Maven, каждый подмодуль является микросервисом SpringBoot (поэтому каждый подмодуль является исполняемым). Я добавил файлы Docker в каждый из подмодулей и хочу запустить Docker CI, но он не может сказать:

unable to prepare context: path "/discovery-service" not found

Служба обнаружения - это имя подмодуля maven. Мой docker .yaml

name: Docker Image CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:

  build:

    runs-on: ubuntu-latest

    steps:
    - uses: actions/checkout@v2
    - name: Build the Docker image
      run: |
        docker build /discovery-service --file Dockerfile --tag my-image-name:$(date +%s)
        docker build /config-server --file Dockerfile --tag my-image-name:$(date +%s)
        docker build /gateway-service --file Dockerfile --tag my-image-name:$(date +%s)
        docker build /business-owner-service --file Dockerfile --tag my-image-name:$(date +%s)
© 2020 GitHub, Inc.

Как я могу получить файлы Docker для создания? Я хотел бы использовать Github для развертывания непосредственно в Google Cloud Kubernetes

Ответы [ 2 ]

0 голосов
/ 24 апреля 2020

Я заставил его работать, и вот мой рабочий процесс:

steps:
    - uses: actions/checkout@v2
    - name: Build the Docker image
      run: |
        docker build comand-API/discovery-service --file comand-API/discovery-service/Dockerfile --tag my-image-name:$(date +%s)
        docker build comand-API/config-server --file comand-API/config-server/Dockerfile --tag my-image-name:$(date +%s)
        docker build comand-API/gateway-service --file comand-API/gateway-service/Dockerfile --tag my-image-name:$(date +%s)
        docker build comand-API/business-owner-service --file comand-API/business-owner-service/Dockerfile --tag my-image-name:$(date +%s)

В основном мне просто нужно было потерять / на целевую папку и обновить путь к файлу

0 голосов
/ 12 апреля 2020

Отказ от ответственности: Это может быть немного не по теме c ответ, но я держу пари, что он может помочь в любом случае и дать некоторую полезную информацию.

Решение: Я скорее советую вам использовать указанный c плагин Maven com.spotify:dockerfile-maven-plugin, который может создать Docker файл и изображение из него, которое может быть использовано в CI.

Разбивка:

  • goals: build и push goal создают и отправляют образ Docker в локальный репозиторий
  • repository: имя репозитория с именем image
  • dockerfile: Базовый Dockerfile (если используется один из root, в противном случае перейдите в каталог модуля)

Вот пример:

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>dockerfile-maven-plugin</artifactId>
    <version>1.4.10</version>
    <executions>
        <execution>
            <id>default</id>
            <goals>
                <goal>build</goal>                                    
                <goal>push</goal>                                       
            </goals>
        </execution>
    </executions>
    <configuration>
        <repository>com.company/${project.artifactId}</repository>
        <tag>${project.version}</tag>
        <dockerfile>${project.parent.basedir}/Dockerfile</dockerfile>
        <contextDirectory>${project.parent.basedir}</contextDirectory>
        <pullNewerImage>false</pullNewerImage>
        <buildArgs>
            <BASE_DIRECTORY>${project.artifactId}</BASE_DIRECTORY>
        </buildArgs>
    </configuration>
</plugin>

Эта фаза может быть настроена с использованием профилей Maven . Таким образом, этот plugin может быть необязательным только для использования CI и пропущен при сборке на вашем компьютере.

...