Github Действие для сборки maven с последующим Docker сборкой push - PullRequest
1 голос
/ 23 апреля 2020

Я новичок в GitHub Actions. У меня есть ниже DockerFile

FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

Я пытаюсь использовать GitHub Action Publi sh Docker и ниже мой код действия

name: Publi sh Docker on: [push] задания: build: run-on: ubuntu-самые последние шаги: - использует: actions / checkout@master - имя: Publi sh для Реестра использует: elgohr / Publish-Docker-Github-Action@master с: имя: myDocker / имя репозитория: $ {{secrets.DOCKER_USERNAME}} пароль: $ {{secrets.DOCKER_PASSWORD}}

Сборка завершается с ошибкой ниже

Step 5/6 : COPY ${JAR_FILE} app.jar
COPY failed: no source files were specified

Я предполагаю, что это не так возможность получить файл JAR в целевой папке. Должен ли я добавить еще один шаг для Maven Build до того, как docker build обеспечит создание целевой папки с помощью Jar.

Я обновил свое действие, как показано ниже, но с той же ошибкой

name: Build and push Docker images

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

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: Set up JDK 1.8
        uses: actions/setup-java@v1
        with:
          java-version: 1.8
      - name: Build with Maven
        run: mvn -B package --file pom.xml
      - uses: actions/checkout@master
      - name: Publish to Registry
        uses: elgohr/Publish-Docker-Github-Action@master
        with:
          name: vinodjayachandran/spring-boot-docker
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_PASSWORD }}

Для точного кода см. Мой репо на git: https://github.com/vinodjayachandran/spring-boot-docker/

Ответы [ 2 ]

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

Решение состоит в том, чтобы иметь многоступенчатую docker сборку. По сути, делайте сборку maven из DockerFile, а не из GitHub Actions.

Мой финальный DockerFile

#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package

#
# Package stage
#
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/*.jar /usr/local/lib/app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/usr/local/lib/app.jar"]

GitHub Action:

name: Build and push Docker images

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

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - name: Publish to Registry
      uses: elgohr/Publish-Docker-Github-Action@master
      with:
        name: vinodjayachandran/spring-boot-docker
        username: ${{ secrets.DOCKER_USERNAME }}
        password: ${{ secrets.DOCKER_PASSWORD }}
0 голосов
/ 23 апреля 2020

Все выглядит нормально, но вы должны измениться;

FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ENV JAR_FILE=*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

после того, как вы увидите работу, как показано ниже.

docker build -t deneme:latest .
Sending build context to Docker daemon   2.56kB
Step 1/6 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/6 : RUN addgroup -S spring && adduser -S spring -G spring
 ---> Using cache
 ---> ae235df4b0a2
Step 3/6 : USER spring:spring
 ---> Using cache
 ---> 9ac909bf6b8c
Step 4/6 : ENV JAR_FILE=target/*.jar
 ---> Running in 7c8948d44b63
Removing intermediate container 7c8948d44b63
 ---> a26f368cfdba
Step 5/6 : COPY ${JAR_FILE} app.jar
COPY failed: no source files were specified
root@servet:~/denem# ls
app.jar  Dockerfile
root@servet:~/denem# nano Dockerfile
root@servet:~/denem# docker build -t deneme:latest .
Sending build context to Docker daemon   2.56kB
Step 1/6 : FROM openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/6 : RUN addgroup -S spring && adduser -S spring -G spring
 ---> Using cache
 ---> ae235df4b0a2
Step 3/6 : USER spring:spring
 ---> Using cache
 ---> 9ac909bf6b8c
Step 4/6 : ENV JAR_FILE=*.jar
 ---> Running in a78dfae771a0
Removing intermediate container a78dfae771a0
 ---> bdd4cab1bd9c
Step 5/6 : COPY ${JAR_FILE} app.jar
 ---> 9bec1d061268
Step 6/6 : ENTRYPOINT ["java","-jar","/app.jar"]
 ---> Running in c23f2ddb682b
Removing intermediate container c23f2ddb682b
 ---> e24407464a2b
Successfully built e24407464a2b
Successfully tagged deneme:latest
...