diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000000000000000000000000000000000..a929e5f0858892e4d54880e3ad0ebb0f70e6203b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +* +!src +!pom.xml +!Dockerfile +!entrypoint.sh +!settings.xml \ No newline at end of file diff --git a/.gitignore b/.gitignore index 53090bb36c96f1019064c14ccb5f149f4d5cb193..17b9474b1434960c0ce3d4974bc6b49288991633 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ target/ .settings .springBeans .sts4-cache +settings.xml ### IntelliJ IDEA ### .idea diff --git a/Dockerfile b/Dockerfile index 8c5e4e8adf58d364d6aba3c2ab27c532c71ffa75..02af22eb37e054cc2921aa5b437635cb012819e2 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,38 @@ -FROM ubuntu:20.04 -LABEL maintainer="cym1102@qq.com" -ENV DEBIAN_FRONTEND=noninteractive -ENV TZ=Asia/Shanghai -RUN apt-get clean && apt-get update &&\ - apt-get install -y nginx &&\ - apt-get install -y net-tools &&\ - apt-get install -y curl &&\ - apt-get install -y wget &&\ - apt-get install -y ttf-dejavu &&\ - apt-get install -y fontconfig &&\ - fc-cache -f -v &&\ - ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone &&\ - apt-get install tzdata -ENV LANG C.UTF-8 -ADD jre.tar.xz /home/ -RUN chmod 777 /home/jre/bin/java -ADD nginxWebUI.sh /home/ -RUN chmod 777 /home/nginxWebUI.sh -COPY target/nginxWebUI-*.jar /home/nginxWebUI.jar -ENTRYPOINT ["sh","-c", "/home/nginxWebUI.sh ${BOOT_OPTIONS} && tail -f /dev/null"] +FROM alpine:3.14 AS builder +COPY . /build +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ + && apk add --update --no-cache maven \ + && cd /build \ + && if [[ -s settings.xml ]]; then \ + mkdir -p /root/.m2; \ + cp -fv settings.xml /root/.m2/settings.xml; \ + fi \ + && mvn clean package \ + && mkdir -p /out/home \ + && cp target/nginxWebUI-*.jar /out/home/nginxWebUI.jar +COPY entrypoint.sh /out/usr/local/bin/entrypoint.sh + +FROM alpine:3.14 +ENV LANG=zh_CN.UTF-8 \ + TZ=Asia/Shanghai \ + PS1="\u@\h:\w \$ " +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \ + && apk add --update --no-cache \ + nginx \ + nginx-mod-stream \ + openjdk8-jre \ + net-tools \ + curl \ + wget \ + ttf-dejavu \ + fontconfig \ + tzdata \ + tini \ + && fc-cache -f -v \ + && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime \ + && echo "${TZ}" > /etc/timezone \ + && rm -rf /var/cache/apk/* /tmp/* +COPY --from=builder /out / +VOLUME ["/home/nginxWebUI"] +ENTRYPOINT ["tini", "entrypoint.sh"] + diff --git a/buildx.sh b/buildx.sh new file mode 100755 index 0000000000000000000000000000000000000000..10c1553b71ddbbc835b11c3edde68f5806f756a3 --- /dev/null +++ b/buildx.sh @@ -0,0 +1,38 @@ +#!/usr/bin/env bash + +## 需要安装好docker,并登陆docker login +## 需要安装好docker-buildx:https://docs.docker.com/buildx/working-with-buildx/ +## 如需自动推送readme至dockerhub,需要安装docker-pushrm:https://github.com/christian-korneck/docker-pushrm +## Dockerfile同目录下运行此脚本 +## 如果在同目录下存在maven的镜像加速配置文件settings.xml,也会作为编译时的加速配置 + +set -o pipefail + +## 基本信息 +repo="cym1102/nginxwebui" +arch="linux/amd64,linux/arm64,linux/arm/v7" +ver=$(cat pom.xml | grep -A1 nginxWebUI | grep version | grep -oP "\d+\.\d+\.\d+") +echo "构建镜像:$repo" +echo "构建架构:$arch" +echo "构建版本:$ver" +echo "3秒后开始编译..." +sleep 3 + +## 准备跨平台构建环境 +docker pull tonistiigi/binfmt +docker run --privileged --rm tonistiigi/binfmt --install all +docker buildx create --name builder --use 2>/dev/null || docker buildx use builder +docker buildx inspect --bootstrap + +## 多平台镜像同时构建并推送 +docker buildx build \ + --cache-from "type=local,src=/tmp/.buildx-cache" \ + --cache-to "type=local,dest=/tmp/.buildx-cache" \ + --platform "$arch" \ + --tag ${repo}:${ver} \ + --tag ${repo}:latest \ + --push \ + . + +## 推送readme.md至dockerhub,需要docker-pushrm +# docker pushrm $repo diff --git a/entrypoint.sh b/entrypoint.sh new file mode 100755 index 0000000000000000000000000000000000000000..de09fabc5d23a329e233f8f58fb4d73504b340b0 --- /dev/null +++ b/entrypoint.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd /home +exec java -jar -Xmx64m nginxWebUI.jar "${BOOT_OPTIONS}" > /dev/null diff --git a/jre.tar.xz b/jre.tar.xz deleted file mode 100644 index 9ca0b93b068d028a8177b686e9a20dc72246c03d..0000000000000000000000000000000000000000 Binary files a/jre.tar.xz and /dev/null differ diff --git a/nginxWebUI.sh b/nginxWebUI.sh deleted file mode 100644 index 936f6b87fe2c72a7f645d788f4b0795221c21ba7..0000000000000000000000000000000000000000 --- a/nginxWebUI.sh +++ /dev/null @@ -1,2 +0,0 @@ -#启动jar -nohup /home/jre/bin/java -jar -Xmx64m /home/nginxWebUI.jar $* > /dev/null & \ No newline at end of file