[英]Is there a way to set path for docker build with the github action plugin docker/build-push-action@v1
[英]Github Action to maven build followed by Docker build push
我是 GitHub 操作的新手。 我有以下 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 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 構建之前為 Maven 構建添加另一個步驟,以確保使用 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/
解決方案是構建多級 docker。 本質上是從 DockerFile 而不是從 GitHub 操作構建 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 }}
一切看起來都很好,但你必須改變;
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.