diff options
| author | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-05-07 17:30:41 +0100 |
|---|---|---|
| committer | Alex Pooley (@zuedev) <zuedev@gmail.com> | 2026-05-07 17:30:41 +0100 |
| commit | 3c79ec13cd2097c7c08c13efeb7759f0708fb80b (patch) | |
| tree | d12b79e551d0bd1fdf93589f7e51736c4ebf31b0 /Dockerfile.debian | |
| parent | e4b3b4b9d738b99b2e5be304c2a1461e25242c72 (diff) | |
| download | git.zue.dev-3c79ec13cd2097c7c08c13efeb7759f0708fb80b.tar git.zue.dev-3c79ec13cd2097c7c08c13efeb7759f0708fb80b.tar.gz git.zue.dev-3c79ec13cd2097c7c08c13efeb7759f0708fb80b.tar.bz2 git.zue.dev-3c79ec13cd2097c7c08c13efeb7759f0708fb80b.tar.xz git.zue.dev-3c79ec13cd2097c7c08c13efeb7759f0708fb80b.zip | |
Add Dockerfiles for Debian SSH server and CGit setup, and update docker-compose configuration
Diffstat (limited to 'Dockerfile.debian')
| -rw-r--r-- | Dockerfile.debian | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/Dockerfile.debian b/Dockerfile.debian new file mode 100644 index 0000000..be25622 --- /dev/null +++ b/Dockerfile.debian @@ -0,0 +1,50 @@ +# This Dockerfile sets up a simple SSH server for hosting git repositories. It installs the necessary packages, creates the required directories, and configures SSH to allow access using authorized keys. + +# Start with a base Debian image +FROM debian:13.4 + +# Install dependencies and clean up apt cache to reduce image size +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssh-server \ + git \ + cron \ + && rm -rf /var/lib/apt/lists/* + +# Create the privilage separation directory as openssh-server post-install script doesn't do it in docker build context +RUN mkdir -p /var/run/sshd + +# Create a git user and set up the home directory +RUN useradd -m -s /bin/bash git + +# Create the repositories directory and set appropriate permissions +RUN mkdir -p /repositories && chown git:git /repositories + +# Disallow password authentication for security reasons +RUN echo "PasswordAuthentication no" >> /etc/ssh/sshd_config + +# Copy the entrypoint script into the container +COPY entrypoint.bash / + +# Copy cron jobs +COPY etc/cron.d/* /etc/cron.d/ + +# Set appropriate permissions for the cron jobs +RUN chmod 0644 /etc/cron.d/* + +# Copy scripts +COPY scripts/* /scripts/ + +# Set appropriate permissions for the scripts +RUN chmod +x /scripts/* + +# Copy git home overlay +COPY home/git/* /home/git/ + +# Make the entrypoint script executable +RUN chmod +x /entrypoint.bash + +# Expose port 22 for SSH access +EXPOSE 22 + +# Define our entrypoint +ENTRYPOINT [ "/entrypoint.bash" ]
\ No newline at end of file |
