# A seashell buried in the sand, meant only to hear the sea at night. # see https://hub.docker.com/r/phuslu/seashell/ # sudo nerdctl run -d --restart=always --name buildkitd --privileged -v /var/lib/buildkit:/var/lib/buildkit -v /run/buildkit:/run/buildkit moby/buildkit:latest --addr unix:///run/buildkit/buildkitd.sock # curl -sSLf https://github.com/moby/buildkit/releases/download/v0.21.0/buildkit-v0.21.0.linux-arm64.tar.gz | sudo tar xvz -C /usr/local/bin/ --strip-components=1 --wildcards bin/buildctl # sudo nerdctl build --no-cache -f seashell.dockerfile -t phuslu/seashell --platform linux/amd64,linux/arm64 --output type=image,oci-mediatypes=true,compression=zstd,compression-level=19,push=true,name=docker.io/phuslu/seashell . FROM alpine:3.21 RUN \ apk update && \ apk upgrade && \ apk add --update --no-cache \ bash \ bind-tools \ busybox-openrc \ curl \ dropbear \ fastfetch \ gcompat \ htop \ iproute2 \ jq \ logrotate \ lsblk \ lscpu \ openrc \ openssh-client \ openssl \ procps \ rsync \ tini \ tmux \ xz && \ rm -rf /var/cache/apk/* && \ # add openrc configs for docker echo $'\n\ rc_env_allow="*"\n\ rc_logger="YES"\n\ rc_provide="loopback net"\n\ rc_sys="docker"\n'\ >> /etc/rc.conf && \ # modify other configs echo 'Welcome to Alpine Container Environment!' | tee /etc/motd && \ sed -i '/^for _cmd; do$/,/^done$/d' /usr/libexec/rc/sh/openrc-run.sh && \ sed -i 's/mount -t tmpfs/true/g' /usr/libexec/rc/sh/init.sh && \ sed -i 's/hostname $opts/# hostname $opts/g' /etc/init.d/hostname && \ sed -i 's/^DROPBEAR_OPTS=.*/DROPBEAR_OPTS="-p 127.0.0.1:2022"/' /etc/conf.d/dropbear && \ sed -i '/tty/d' /etc/inittab && \ rm -f /etc/init.d/hwclock \ /etc/init.d/hwdrivers \ /etc/init.d/modules \ /etc/init.d/modules-load \ /etc/init.d/modloop && \ # add cloudinit echo $'#!/sbin/openrc-run\n\ description="start cloudinit"\n\ start()\n\ {\n\ test -n "$cloudinit" && bash <(curl -sSlf "$cloudinit")\n\ }\n'\ > /etc/init.d/cloudinit && \ chmod +x /etc/init.d/cloudinit && \ # add auto-start services rc-update add crond default && \ # rc-update add dropbear default && \ rc-update add cloudinit default && \ # set bash for root sed -i 's#root:x:0:0:root:/root:/bin/sh#root:x:0:0:root:/root:/bin/bash#g' /etc/passwd && \ curl -sSlf phus.lu/bashrc >/root/.bash_profile && \ # add docker-entrypoint.sh && \ echo $'#!/bin/sh\n\ # dropbearkey -t ed25519 -f /etc/dropbear/dropbear_ed25519_host_key\n\ # /usr/sbin/dropbear -p 127.0.0.1:2022\n\ test -n "$cloudinit" && bash <(curl -sSlf "$cloudinit")\n\ exec /usr/sbin/crond -f\n\ \n'\ > /docker-entrypoint.sh && \ chmod +x /docker-entrypoint.sh ENTRYPOINT ["/bin/sh", "-c", "test $$ = 1 && exec init || /sbin/tini -s -- /docker-entrypoint.sh"]