# =========================================================================== # "Fake VPS" jail image for managing docker-mailserver # =========================================================================== # A disposable shell box. The ONLY real host data an SSH session can reach is # the single directory bind-mounted into it (see docker-compose.yml). This # image's own filesystem is throwaway alpine + tooling — NOT your server. # # docker:cli gives us the docker client; we add the compose plugin + a few # niceties so the shell feels like a real box (bash, editors, pager, git). # =========================================================================== FROM docker:27-cli RUN apk add --no-cache \ bash bash-completion \ docker-cli-compose \ vim nano less git curl ca-certificates \ tini # Land here; matches the bind-mount path so `docker compose` resolves the # stack's relative bind paths to the same absolute paths the host daemon sees. WORKDIR /srv/docker-mailserver # Stay alive so the bastion can `docker exec` into us on each SSH session. # tini reaps the zombie shells those sessions leave behind. ENTRYPOINT ["/sbin/tini", "--"] CMD ["tail", "-f", "/dev/null"]