|
| 1 | +ARG ARCH= |
| 2 | +FROM ${ARCH}debian:bookworm AS toolchain |
| 3 | + |
| 4 | +RUN apt-get -y update && \ |
| 5 | + apt-get -y install \ |
| 6 | + build-essential git-core \ |
| 7 | + lintian pkg-config quilt patch cargo \ |
| 8 | + nodejs node-colors node-commander \ |
| 9 | + libudev-dev libapt-pkg-dev \ |
| 10 | + libacl1-dev libpam0g-dev libfuse3-dev \ |
| 11 | + libsystemd-dev uuid-dev libssl-dev \ |
| 12 | + libclang-dev libjson-perl libcurl4-openssl-dev \ |
| 13 | + dh-exec dh-nodejs wget |
| 14 | + |
| 15 | +ENV RUSTUP_TOOLCHAIN=stable |
| 16 | +RUN wget https://static.rust-lang.org/rustup/rustup-init.sh && \ |
| 17 | + chmod +x rustup-init.sh && \ |
| 18 | + ./rustup-init.sh -y --default-toolchain "$RUSTUP_TOOLCHAIN" |
| 19 | + |
| 20 | +WORKDIR /src |
| 21 | + |
| 22 | +RUN for tool in /root/.cargo/bin/*; do ln -vsf $tool /usr/bin/; done |
| 23 | +RUN /usr/bin/rustc --version |
| 24 | +RUN git config --global user.email "[email protected]" && \ |
| 25 | + git config --global user.name "Docker Compile" |
| 26 | + |
| 27 | +FROM toolchain as builder |
| 28 | + |
| 29 | +# Clone all sources |
| 30 | +ARG VERSION=master |
| 31 | +ADD /versions/${VERSION}/ /patches/ |
| 32 | +RUN /patches/clone.bash |
| 33 | + |
| 34 | +# Apply all patches |
| 35 | +ADD /scripts/ /scripts/ |
| 36 | +RUN /scripts/apply-patches.bash /patches/server/*.patch |
| 37 | +RUN /scripts/strip-cargo.bash |
| 38 | +RUN /scripts/resolve-dependencies.bash |
| 39 | + |
| 40 | +# A first required dep |
| 41 | +RUN apt-get -y build-dep $PWD/pve-eslint |
| 42 | +RUN cd pve-eslint/ && make dinstall |
| 43 | + |
| 44 | +# A proxmox-perl-rs required deps |
| 45 | +RUN apt-get -y build-dep $PWD/perlmod/perlmod $PWD/perlmod/perlmod-bin $PWD/perlmod/perlmod-macro |
| 46 | +RUN cd perlmod/perlmod-bin && dpkg-buildpackage -us -uc -b && dpkg -i ../perlmod-bin*.deb |
| 47 | + |
| 48 | +# A pve-common required deps |
| 49 | +RUN apt-get -y build-dep $PWD/proxmox-perl-rs/pve-rs |
| 50 | +RUN cd proxmox-perl-rs/pve-rs && make dinstall |
| 51 | +RUN cd proxmox-perl-rs/common/pkg && make deb && dpkg -i *.deb |
| 52 | +RUN apt-get -y build-dep $PWD/pve-common |
| 53 | +RUN cd pve-common/ && ( make dinstall || apt-get -f -y install && make dinstall ) |
| 54 | + |
| 55 | +# Install dev dependencies of widget toolkit |
| 56 | +RUN apt-get -y build-dep $PWD/proxmox-widget-toolkit |
| 57 | +RUN cd proxmox-widget-toolkit/ && make deb && dpkg -i proxmox-widget-toolkit-dev*.deb |
| 58 | + |
| 59 | +# Deps for all rest |
| 60 | +RUN apt-get -y build-dep $PWD/proxmox-acme |
| 61 | +RUN apt-get -y build-dep $PWD/proxmox-backup |
| 62 | +RUN apt-get -y build-dep $PWD/proxmox-mini-journalreader |
| 63 | +RUN apt-get -y build-dep $PWD/extjs |
| 64 | +RUN apt-get -y build-dep $PWD/proxmox-i18n |
| 65 | +RUN apt-get -y build-dep $PWD/pve-xtermjs/termproxy |
| 66 | +RUN apt-get -y build-dep $PWD/pve-xtermjs/xterm.js |
| 67 | +RUN apt-get -y build-dep $PWD/libjs-qrcodejs |
| 68 | + |
| 69 | +# Compile ALL |
| 70 | +RUN cd proxmox-backup/ && make deb |
| 71 | +RUN cd extjs/ && make deb |
| 72 | +RUN cd proxmox-i18n/ && make deb |
| 73 | +RUN cd pve-xtermjs/termproxy/ && make deb |
| 74 | +RUN cd pve-xtermjs/xterm.js/ && make deb |
| 75 | +RUN cd proxmox-mini-journalreader/ && make deb |
| 76 | +RUN cd libjs-qrcodejs/ && make deb |
| 77 | +RUN cd proxmox-acme/ && make deb |
| 78 | + |
| 79 | +# Copy all debian packages |
| 80 | +RUN mkdir -p /deb && \ |
| 81 | + find /src/ -name '*.deb' -exec cp -av {} /deb/ \; |
| 82 | + |
| 83 | +#================================= |
| 84 | + |
| 85 | +FROM ${ARCH}debian:bookworm |
| 86 | +COPY --from=builder /deb/ /deb/ |
| 87 | + |
| 88 | +# Install all packages |
| 89 | +RUN export DEBIAN_FRONTEND=noninteractive && \ |
| 90 | + apt-get -y update && \ |
| 91 | + apt install -y runit ssmtp /deb/*.deb |
| 92 | + |
| 93 | +# Add default configs |
| 94 | +ADD /pbs/ /etc/proxmox-backup-default/ |
| 95 | + |
| 96 | +VOLUME /etc/proxmox-backup |
| 97 | +VOLUME /var/log/proxmox-backup |
| 98 | +VOLUME /var/lib/proxmox-backup |
| 99 | + |
| 100 | +ADD runit/ /runit/ |
| 101 | +CMD ["runsvdir", "/runit"] |
0 commit comments