|
1 | | -# 1. Use Debian base |
2 | 1 | FROM debian:trixie |
3 | 2 |
|
4 | | -ENV DEBIAN_FRONTEND=noninteractive |
| 3 | +ENV container docker |
| 4 | +STOPSIGNAL SIGRTMIN+3 |
| 5 | +VOLUME ["/sys/fs/cgroup"] |
5 | 6 |
|
6 | | -# 2. Install necessary tools |
7 | | -RUN apt update && apt install -y \ |
8 | | - dpkg-dev \ |
9 | | - apt-utils \ |
10 | | - adduser \ |
| 7 | +# Install systemd + dependencies |
| 8 | +RUN apt update && apt install -y systemd systemd-sysv dbus \ |
| 9 | + dpkg-dev apt-utils adduser gzip \ |
11 | 10 | && rm -rf /var/lib/apt/lists/* |
12 | 11 |
|
13 | | -# 3. Symlink addgroup for minimal system scripts |
14 | | -RUN ln -s /usr/sbin/addgroup /usr/bin/addgroup || true |
15 | | - |
16 | | -# 4. Build args for parameterization |
| 12 | +# Copy your packages and setup repo (as before) |
17 | 13 | ARG OLD_PACKAGE_PATH=build/old_package |
18 | 14 | ARG NEW_PACKAGE_PATH=build |
19 | 15 | ARG APP_PACKAGE_NAME=arduino-app-cli |
20 | 16 | ARG ROUTER_PACKAGE_NAME=arduino-router |
21 | 17 | ARG ARCH=arm64 |
22 | | -ARG VERSION=0.6.3 |
23 | 18 |
|
24 | | -# 5. Copy packages dynamically |
25 | 19 | COPY ${OLD_PACKAGE_PATH}/${APP_PACKAGE_NAME}*.deb /tmp/old_app.deb |
26 | 20 | COPY ${NEW_PACKAGE_PATH}/${APP_PACKAGE_NAME}*.deb /tmp/new_app.deb |
27 | 21 | COPY ${NEW_PACKAGE_PATH}/${ROUTER_PACKAGE_NAME}*.deb /tmp/new_router.deb |
28 | 22 |
|
29 | | -# 6. Install old package + router dependency |
30 | | -RUN apt update && apt install -y \ |
31 | | - /tmp/old_app.deb \ |
32 | | - /tmp/new_router.deb \ |
33 | | - && rm /tmp/old_app.deb |
34 | | - |
35 | | -# 7. Setup local APT repo with new packages |
36 | | -RUN mkdir -p /var/www/html/myrepo/dists/trixie/main/binary-${ARCH} |
37 | | - |
38 | | -# Rename new packages to match their real package/version/arch |
39 | | -RUN mv /tmp/new_app.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/${APP_PACKAGE_NAME}_${VERSION}_${ARCH}.deb |
40 | | -RUN mv /tmp/new_router.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/${ROUTER_PACKAGE_NAME}_0.6.2-1_${ARCH}.deb |
| 23 | +RUN apt update && apt install -y /tmp/old_app.deb /tmp/new_router.deb \ |
| 24 | + && rm /tmp/old_app.deb \ |
| 25 | + && mkdir -p /var/www/html/myrepo/dists/trixie/main/binary-${ARCH} \ |
| 26 | + && mv /tmp/new_app.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/ \ |
| 27 | + && mv /tmp/new_router.deb /var/www/html/myrepo/dists/trixie/main/binary-${ARCH}/ |
41 | 28 |
|
42 | | -# 8. Generate Packages.gz metadata |
43 | 29 | WORKDIR /var/www/html/myrepo |
44 | | -RUN dpkg-scanpackages dists/trixie/main/binary-arm64 /dev/null | gzip -9c > dists/trixie/main/binary-arm64/Packages.gz |
| 30 | +RUN dpkg-scanpackages dists/trixie/main/binary-${ARCH} /dev/null | gzip -9c > dists/trixie/main/binary-${ARCH}/Packages.gz |
45 | 31 | WORKDIR / |
46 | 32 |
|
47 | | -# 9. Configure local APT repo |
| 33 | +RUN usermod -s /bin/bash arduino || true |
| 34 | +RUN mkdir -p /home/arduino && chown -R arduino:arduino /home/arduino |
| 35 | + |
| 36 | + |
48 | 37 | RUN echo "deb [trusted=yes arch=${ARCH}] file:/var/www/html/myrepo trixie main" \ |
49 | 38 | > /etc/apt/sources.list.d/my-mock-repo.list |
50 | 39 |
|
51 | | -# 10. Fix home dir for arduino user (optional) |
52 | | -RUN usermod -s /bin/bash arduino || true |
53 | | -RUN mkdir -p /home/arduino && chown -R arduino:arduino /home/arduino |
54 | 40 |
|
55 | | -# 11. Entrypoint: show upgrade availability |
56 | | -RUN echo '#!/bin/bash\n\ |
57 | | -set -e\n\ |
58 | | -echo "--- Updating APT ---"\n\ |
59 | | -apt update\n\ |
60 | | -echo "--- Installed version ---"\n\ |
61 | | -dpkg -l | grep ${APP_PACKAGE_NAME} || true\n\ |
62 | | -echo "--- Upgrade candidate ---"\n\ |
63 | | -apt-cache policy ${APP_PACKAGE_NAME}\n\ |
64 | | -echo "--- Available upgrades ---"\n\ |
65 | | -apt list --upgradable | grep ${APP_PACKAGE_NAME} || echo "No upgrade found"\n\ |
66 | | -echo "--- Simulating upgrade ---"\n\ |
67 | | -apt upgrade --simulate\n\ |
68 | | -' > /entrypoint.sh |
| 41 | +VOLUME [ "/sys/fs/cgroup" ] |
| 42 | + |
| 43 | + |
69 | 44 |
|
70 | | -RUN chmod +x /entrypoint.sh |
71 | | -CMD ["/entrypoint.sh"] |
| 45 | +# CMD: systemd must be PID 1 |
| 46 | +CMD ["/sbin/init"] |
0 commit comments