mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-19 01:35:24 +01:00
deterministic docker support
This commit is contained in:
parent
347a33bd7e
commit
3e532d3e7d
3 changed files with 33 additions and 13 deletions
2
.dockerignore
Normal file
2
.dockerignore
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
*
|
||||||
|
!target
|
||||||
33
Dockerfile
33
Dockerfile
|
|
@ -1,13 +1,24 @@
|
||||||
FROM local/stage0 as stage0
|
|
||||||
|
|
||||||
FROM debian as fetch
|
|
||||||
RUN apt update && apt install -y curl gcc
|
|
||||||
ADD . live-bootstrap
|
|
||||||
WORKDIR live-bootstrap
|
|
||||||
RUN ./download-distfiles.sh
|
|
||||||
RUN mv target/ /rootfs/
|
|
||||||
|
|
||||||
FROM scratch as build
|
FROM scratch as build
|
||||||
COPY --from=fetch /rootfs .
|
ADD target/ /
|
||||||
ENV PATH=/bin
|
|
||||||
RUN ["/bootstrap-seeds/POSIX/x86/kaem-optional-seed"]
|
RUN ["/bootstrap-seeds/POSIX/x86/kaem-optional-seed"]
|
||||||
|
|
||||||
|
FROM build as install
|
||||||
|
ENV PATH=/bin:/usr/sbin:/usr/bin
|
||||||
|
RUN set -eux; \
|
||||||
|
rm -rf /usr/lib/python*/__pycache__; \
|
||||||
|
mkdir -p /rootfs/etc /rootfs/home/user; \
|
||||||
|
cp -R $(ls -d /etc/* | grep -v '\(resolv.conf\|hosts\)') /rootfs/etc/; \
|
||||||
|
cp -R lib usr bin var /rootfs/; \
|
||||||
|
echo "user:x:1000:" > /rootfs/etc/group; \
|
||||||
|
echo "user:x:1000:1000::/home/user:/bin/bash" > /rootfs/etc/passwd; \
|
||||||
|
find /rootfs -exec touch -hcd "@0" "{}" +
|
||||||
|
|
||||||
|
FROM scratch as package
|
||||||
|
COPY --from=install /rootfs /
|
||||||
|
USER 1000:1000
|
||||||
|
ENTRYPOINT ["/bin/bash"]
|
||||||
|
ENV TZ=UTC
|
||||||
|
ENV LANG=C.UTF-8
|
||||||
|
ENV SOURCE_DATE_EPOCH=1
|
||||||
|
ENV KCONFIG_NOTIMESTAMP=1
|
||||||
|
ENV PS1="bootstrap$ "
|
||||||
|
|
|
||||||
11
rootfs.py
11
rootfs.py
|
|
@ -175,6 +175,9 @@ def main():
|
||||||
else:
|
else:
|
||||||
args.target_size = 0
|
args.target_size = 0
|
||||||
|
|
||||||
|
if args.docker:
|
||||||
|
args.external_sources = True
|
||||||
|
|
||||||
# Swap file size validation
|
# Swap file size validation
|
||||||
if args.qemu or args.bare_metal:
|
if args.qemu or args.bare_metal:
|
||||||
args.swap = (int(str(args.swap).rstrip('gGmM')) *
|
args.swap = (int(str(args.swap).rstrip('gGmM')) *
|
||||||
|
|
@ -259,9 +262,13 @@ print(shutil.which('chroot'))
|
||||||
arch = stage0_arch_map.get(args.arch, args.arch)
|
arch = stage0_arch_map.get(args.arch, args.arch)
|
||||||
init = os.path.join(os.sep, 'bootstrap-seeds', 'POSIX', arch, 'kaem-optional-seed')
|
init = os.path.join(os.sep, 'bootstrap-seeds', 'POSIX', arch, 'kaem-optional-seed')
|
||||||
print(generator.target_dir, init)
|
print(generator.target_dir, init)
|
||||||
run('env', '-i', 'DOCKER_BUILDKIT=1', 'docker', 'build',
|
run('env', '-i', 'DOCKER_BUILDKIT=1', 'SOURCE_DATE_EPOCH=1',
|
||||||
|
'docker', 'build',
|
||||||
|
'--build-arg=SOURCE_DATE_EPOCH=1',
|
||||||
'--progress=plain',
|
'--progress=plain',
|
||||||
'-t', 'local/live',
|
'--platform=linux/amd64',
|
||||||
|
'--target=package',
|
||||||
|
'-t', 'local/live-bootstrap',
|
||||||
'.')
|
'.')
|
||||||
|
|
||||||
elif args.bwrap:
|
elif args.bwrap:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue