我是 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 操作 Publish Docker下面是我的操作代码name: Publish Docker
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- name: Publish to Registry
uses: elgohr/Publish-Docker-Github-Action@master
with:
name: myDocker/repository
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
构建失败并出现以下错误Step 5/6 : COPY ${JAR_FILE} app.jar
COPY failed: no source files were specified
我假设它无法在目标文件夹下获取 jar 文件。我是否应该在 docker build 之前为 Maven 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 上的 repo:https://github.com/vinodjayachandran/spring-boot-docker/
最佳答案
解决方案是进行多阶段 docker 构建。本质上是从 DockerFile 而不是从 GitHub Actions 进行 maven 构建。
我的最终 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 操作:
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 }}
关于docker - Github Action 到 maven 构建,然后是 Docker 构建推送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61388905/