docker and http

This commit is contained in:
2024-02-09 14:23:08 +00:00
parent cf9904b34e
commit 4ddc50f366
3 changed files with 99 additions and 0 deletions

35
Dockerfile Normal file
View File

@@ -0,0 +1,35 @@
# Use the official Node.js image as the base image
FROM node:latest
# install nginx
RUN apt-get update && apt-get install -y nginx git fcgiwrap spawn-fcgi
ENV GIT_PEAR=/srv/repos/pear
EXPOSE 80
STOPSIGNAL SIGTERM
# Set the working directory inside the container
WORKDIR /app
# Clone the gitpear repository from GitHub
RUN git clone https://github.com/dzdidi/gitpear.git
# Change the working directory to the gitpear directory
WORKDIR /app/gitpear
# Install the dependencies using npm
RUN npm install
# Link the gitpear package globally
RUN npm link
RUN mkdir -p /srv/repos/pear
COPY default /etc/nginx/sites-enabled/default
WORKDIR /app
COPY entrypoint.sh .
RUN chmod +x entrypoint.sh
ENTRYPOINT ["/bin/bash", "-c", "/app/entrypoint.sh"]

18
default Normal file
View File

@@ -0,0 +1,18 @@
server {
listen 80;
server_name _;
# This is where the repositories live on the server
root /srv/repos/pear;
location ~ (/.*) {
fastcgi_pass unix:/var/run/fcgiwrap.socket;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
# export all repositories under GIT_PROJECT_ROOT
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT /srv/repos/pear;
fastcgi_param PATH_INFO $1;
}
}

46
entrypoint.sh Normal file
View File

@@ -0,0 +1,46 @@
#!/bin/bash
# if $1 includes an url
exec > >(tee -a "/tmp/deployment.log") 2>&1
export GIT_PEAR=/srv/repos/pear
git pear daemon -s
# if $1 exists
if [ -n "$1" ]; then
REPO_NAME=$1
fi
if [[ $REPO_NAME =~ ^https.* ]]; then
ORIGINAL_NAME=$(basename $REPO_NAME .git)
mkdir -p /srv/repos/"$ORIGINAL_NAME"
git clone $REPO_NAME /srv/repos/"$ORIGINAL_NAME"
cd /srv/repos/"$ORIGINAL_NAME"
git pear init -s
# enter pear repo and expose http
cd /srv/repos/pear/"$ORIGINAL_NAME"/
echo "[http]" >> config
echo " receivepack = true" >> config
fi
if [[ ! $REPO_NAME =~ ^https.* ]]; then
mkdir -p /srv/repos/"$REPO_NAME"
cd /srv/repos/"$REPO_NAME"
git init
git pear init -s
# enter pear repo and expose http
cd /srv/repos/pear/"$REPO_NAME"/
echo "[http]" >> config
echo " receivepack = true" >> config
# git config --bool core.bare true
fi
echo "REPO_NAME: $REPO_NAME" >> /tmp/debug.log
echo "ORIGINAL_NAME: $ORIGINAL_NAME" >> /tmp/debug.log
echo "GIT_PEAR: $GIT_PEAR" >> /tmp/debug.log
echo "PEAR_KEY: $PEAR_KEY" >> /tmp/debug.log
echo "PEAR_REPO: $PEAR_REPO" >> /tmp/debug.log
/etc/init.d/fcgiwrap start
chmod 766 /var/run/fcgiwrap.socket
nginx -g "daemon off;"