Deploying Sites with Gogs

To start gogs must have its data volume placed somewhere on disk, for this example it is placed at /var/gogs on the host system. Next a post-receive must be setup on the repo, it should look something along the lines of this.

git --work-tree=/data/serve/ --git-dir=/data/git/gogs-repositories/herohamp/ checkout -f

Make sure to change the second argument --git-dir to match the location of the gogs repo. What this does is it makes it so that the git repo is copied to the location /data/serve/ on each git commit. Now that the data is at an easy to access place we need to do something with it. For this the base nginx docker container will be used due to it’s simplicity. With it a volume can just be made to the container’s path /usr/share/nginx/html and it will serve the contents. To do this a simple docker-compose was put together. Yours should look similar just make sure to update the location of the gogs data.

    image: nginx:1.17.10-alpine
      - /var/gogs/serve/

The same thing can be done with the following docker run command.

docker run -v /var/gogs/serve/ -d nginx:1.17.10-alpine

The Traefik labels allows for Traefik to automatically deploy the site for me with https. This works because nginx docker image will just serve to the client whatever the current contents of its local /usr/share/nginx/html which in this case is mapped to the hosts folder /var/gogs/serve/ In actual deployment of this and other sites I would suggest using something like Traefik as a proxy in front of the nginx containers.

Hello reader. I do not normally like to put advertisements or promotions on my website, but recently a good friend of my Jaden Ann Scrivener died in a car crash. She was known in the community as the most caring and energetic person around. She was a beam of sunshine and happiness brightening up the day of anyone who interacted with her. If you could please donate to her memorial fund. All the proceeds will go to the Ray of Hope Medical Missions which facilitates life-changing surgeries, reduces infant mortality, and provides mission opportunities locally.