Serves files to the public, static content host, etc.
Go to file
Steven Polley 44b2a581ca
All checks were successful
continuous-integration/drone Build is passing
move from deadbeef.codes to code.stevenpolley.net
2024-06-28 03:46:31 -06:00
.drone.yml move from deadbeef.codes to code.stevenpolley.net 2024-06-28 03:46:31 -06:00
docker-compose.yml Update readme and docker-compose example 2020-08-19 20:27:05 -06:00
Dockerfile add maintainer to Dockerfile 2020-10-04 21:08:55 +00:00
go.mod update to go 1.20 2023-06-10 12:23:56 -06:00
main.go Remove fmt package 2020-04-04 18:39:26 -06:00
README.md Update readme and docker-compose example 2020-08-19 20:27:05 -06:00

Build Status

deadbeef.codes-publicfileserver

Serves files to the public, static content to any files in ./public

This is meant to be a spot for non-changing content, to host files to allow me to share with others. In most cases it'll be best practice to keep project-related files within the project directory and serve public static content from a webserver within that project.

Prerequisites

  1. First, install Go.
  2. Then, install Docker - see left menu for other distibutions.
  3. Finally, install [docker-compose](sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose)

Build Application

go build -a -ldflags '-w'

You may need to log out and back in afterwards to ensure the "go" command is set in your PATH environment variable, otherwise it may say it's an invalid command.

Build Container

Disclaimer! If you use this, youll need to build the container yourself. I have a CICD pipeline setup, but my registry is used for my internal infrastructure only and is not publicly available.

Because this is a staticly linked binary with no external runtime dependancies, the container literally only contains the binary file, keeping it clean and low in size (6.3MB). I never did understand why people include operating systems in containers.

docker build -t publicfileserver:latest .

Example docker-compose.yml

version: '3.7'

services:
  publicfileserver:
    image: publicfileserver:latest
    restart: always
    ports:
      - 8080:8080
    volumes:
      - /data/public:/public

In this example, data stored on your host disk /data/public would be served

Usage

git clone https://deadbeef.codes/steven/deadbeef.codes-publicfileserver.git
docker build -t publicfileserver:latest .
docker-compose up -d