Skip to content

Commit 4d94913

Browse files
committed
adding dependency script
1 parent a42b2d4 commit 4d94913

File tree

1 file changed

+84
-65
lines changed

1 file changed

+84
-65
lines changed

Dockerfile

+84-65
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,25 @@ WORKDIR /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver
2121
ADD . .
2222
RUN GOARCH=$(echo $TARGETPLATFORM | cut -f2 -d '/') GCE_PD_CSI_STAGING_VERSION=$STAGINGVERSION make gce-pd-driver
2323

24-
# Start from Kubernetes Debian base.
25-
FROM gke.gcr.io/debian-base:bookworm-v1.0.2-gke.1 as debian
26-
# Install necessary dependencies
27-
# google_nvme_id script depends on the following packages: nvme-cli, xxd, bash
28-
RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash
24+
# # Start from Kubernetes Debian base.
25+
# FROM gke.gcr.io/debian-base:bookworm-v1.0.2-gke.1 as debian
26+
# # Install necessary dependencies
27+
# # google_nvme_id script depends on the following packages: nvme-cli, xxd, bash
28+
# RUN clean-install util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash
29+
30+
FROM gke.gcr.io/debian-base:bookworm-v1.0.2-gke.2@sha256:1e4d9fa20ba4b3372f2c2f8676823f25c63e1ba7c09ed17933a19b054b97b795 AS debian
31+
ARG PKGS="util-linux e2fsprogs mount ca-certificates udev xfsprogs nvme-cli xxd bash"
32+
RUN cd /tmp \
33+
&& apt-get update \
34+
&& apt-get download $(apt-cache depends --recurse -i $PKGS | grep '^\w') \
35+
&& mkdir -p /dpkg/var/lib/dpkg/status.d/ \
36+
&& for deb in *.deb; do \
37+
package_name=$(dpkg-deb -I ${deb} | awk '/^ Package: .*$/ {print $2}'); \
38+
dpkg --ctrl-tarfile $deb | tar -Oxf - ./control > /dpkg/var/lib/dpkg/status.d/${package_name}; \
39+
dpkg --extract $deb /dpkg || exit 10; \
40+
done \
41+
&& find /dpkg/ -type d -empty -delete \
42+
&& rm -r /dpkg/usr/share/doc/
2943

3044
# Since we're leveraging apt to pull in dependencies, we use `gcr.io/distroless/base` because it includes glibc.
3145
FROM gcr.io/distroless/base-debian11 as distroless-base
@@ -40,66 +54,71 @@ ENV LIB_DIR_PREFIX aarch64
4054

4155
FROM distroless-$TARGETARCH as output-image
4256

43-
# Copy necessary dependencies into distroless base.
44-
COPY --from=builder /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/bin/gce-pd-csi-driver /gce-pd-csi-driver
45-
COPY --from=debian /etc/mke2fs.conf /etc/mke2fs.conf
46-
COPY --from=debian /lib/udev/scsi_id /lib/udev_containerized/scsi_id
47-
COPY --from=debian /bin/mount /bin/mount
48-
COPY --from=debian /bin/umount /bin/umount
49-
COPY --from=debian /sbin/blkid /sbin/blkid
50-
COPY --from=debian /sbin/blockdev /sbin/blockdev
51-
COPY --from=debian /sbin/dumpe2fs /sbin/dumpe2fs
52-
COPY --from=debian /sbin/e* /sbin/
53-
COPY --from=debian /sbin/e2fsck /sbin/e2fsck
54-
COPY --from=debian /sbin/fsck /sbin/fsck
55-
COPY --from=debian /sbin/fsck* /sbin/
56-
COPY --from=debian /sbin/fsck.xfs /sbin/fsck.xfs
57-
COPY --from=debian /sbin/mke2fs /sbin/mke2fs
58-
COPY --from=debian /sbin/mkfs* /sbin/
59-
COPY --from=debian /sbin/resize2fs /sbin/resize2fs
60-
COPY --from=debian /sbin/xfs_repair /sbin/xfs_repair
61-
COPY --from=debian /usr/include/xfs /usr/include/xfs
62-
COPY --from=debian /usr/lib/xfsprogs/xfs* /usr/lib/xfsprogs/
63-
COPY --from=debian /usr/sbin/xfs* /usr/sbin/
64-
# Add dependencies for /lib/udev_containerized/google_nvme_id script
65-
COPY --from=debian /usr/sbin/nvme /usr/sbin/nvme
66-
COPY --from=debian /usr/bin/xxd /usr/bin/xxd
67-
COPY --from=debian /bin/bash /bin/bash
68-
COPY --from=debian /bin/date /bin/date
69-
COPY --from=debian /bin/grep /bin/grep
70-
COPY --from=debian /bin/sed /bin/sed
71-
COPY --from=debian /bin/ln /bin/ln
72-
COPY --from=debian /bin/udevadm /bin/udevadm
73-
74-
# Copy shared libraries into distroless base.
75-
COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre.so.3 \
76-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \
77-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \
78-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \
79-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libcom_err.so.2 \
80-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libdevmapper.so.1.02.1 \
81-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libext2fs.so.2 \
82-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libgcc_s.so.1 \
83-
/lib/${LIB_DIR_PREFIX}-linux-gnu/liblzma.so.5 \
84-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libreadline.so.8 \
85-
/lib/${LIB_DIR_PREFIX}-linux-gnu/libz.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/
86-
87-
COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
88-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libbsd.so.0 \
89-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libinih.so.1 \
90-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \
91-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \
92-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libuuid.so.1 \
93-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \
94-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libattr.so.1 \
95-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libedit.so.2 \
96-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicudata.so.67 \
97-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicui18n.so.67 \
98-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicuuc.so.67 \
99-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libkmod.so.2 \
100-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmd.so.0 \
101-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre2-8.so.0 \
102-
/usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libstdc++.so.6 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/
57+
58+
# Update the bas image for debian
59+
COPY --from=debian ["/dpkg/", "/"]
60+
61+
62+
# # Copy necessary dependencies into distroless base.
63+
# COPY --from=builder /go/src/sigs.k8s.io/gcp-compute-persistent-disk-csi-driver/bin/gce-pd-csi-driver /gce-pd-csi-driver
64+
# COPY --from=debian /etc/mke2fs.conf /etc/mke2fs.conf
65+
# COPY --from=debian /lib/udev/scsi_id /lib/udev_containerized/scsi_id
66+
# COPY --from=debian /bin/mount /bin/mount
67+
# COPY --from=debian /bin/umount /bin/umount
68+
# COPY --from=debian /sbin/blkid /sbin/blkid
69+
# COPY --from=debian /sbin/blockdev /sbin/blockdev
70+
# COPY --from=debian /sbin/dumpe2fs /sbin/dumpe2fs
71+
# COPY --from=debian /sbin/e* /sbin/
72+
# COPY --from=debian /sbin/e2fsck /sbin/e2fsck
73+
# COPY --from=debian /sbin/fsck /sbin/fsck
74+
# COPY --from=debian /sbin/fsck* /sbin/
75+
# COPY --from=debian /sbin/fsck.xfs /sbin/fsck.xfs
76+
# COPY --from=debian /sbin/mke2fs /sbin/mke2fs
77+
# COPY --from=debian /sbin/mkfs* /sbin/
78+
# COPY --from=debian /sbin/resize2fs /sbin/resize2fs
79+
# COPY --from=debian /sbin/xfs_repair /sbin/xfs_repair
80+
# COPY --from=debian /usr/include/xfs /usr/include/xfs
81+
# COPY --from=debian /usr/lib/xfsprogs/xfs* /usr/lib/xfsprogs/
82+
# COPY --from=debian /usr/sbin/xfs* /usr/sbin/
83+
# # Add dependencies for /lib/udev_containerized/google_nvme_id script
84+
# COPY --from=debian /usr/sbin/nvme /usr/sbin/nvme
85+
# COPY --from=debian /usr/bin/xxd /usr/bin/xxd
86+
# COPY --from=debian /bin/bash /bin/bash
87+
# COPY --from=debian /bin/date /bin/date
88+
# COPY --from=debian /bin/grep /bin/grep
89+
# COPY --from=debian /bin/sed /bin/sed
90+
# COPY --from=debian /bin/ln /bin/ln
91+
# COPY --from=debian /bin/udevadm /bin/udevadm
92+
93+
# # Copy shared libraries into distroless base.
94+
# COPY --from=debian /lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre.so.3 \
95+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libselinux.so.1 \
96+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libtinfo.so.6 \
97+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libe2p.so.2 \
98+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libcom_err.so.2 \
99+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libdevmapper.so.1.02.1 \
100+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libext2fs.so.2 \
101+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libgcc_s.so.1 \
102+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/liblzma.so.5 \
103+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libreadline.so.8 \
104+
# /lib/${LIB_DIR_PREFIX}-linux-gnu/libz.so.1 /lib/${LIB_DIR_PREFIX}-linux-gnu/
105+
106+
# COPY --from=debian /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libblkid.so.1 \
107+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libbsd.so.0 \
108+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libinih.so.1 \
109+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmount.so.1 \
110+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libudev.so.1 \
111+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libuuid.so.1 \
112+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libacl.so.1 \
113+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libattr.so.1 \
114+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libedit.so.2 \
115+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicudata.so.67 \
116+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicui18n.so.67 \
117+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libicuuc.so.67 \
118+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libkmod.so.2 \
119+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libmd.so.0 \
120+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libpcre2-8.so.0 \
121+
# /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/libstdc++.so.6 /usr/lib/${LIB_DIR_PREFIX}-linux-gnu/
103122

104123
# Copy NVME support required script and rules into distroless base.
105124
COPY deploy/kubernetes/udev/google_nvme_id /lib/udev_containerized/google_nvme_id

0 commit comments

Comments
 (0)