Compare commits
7 Commits
d31926a003
...
master
Author | SHA1 | Date | |
---|---|---|---|
44b2a581ca | |||
389026c9e7 | |||
373077e01d | |||
12264fc1d3 | |||
2a01483028 | |||
2dbc274043 | |||
8319643753 |
@ -3,7 +3,7 @@ name: default
|
|||||||
|
|
||||||
workspace:
|
workspace:
|
||||||
base: /go
|
base: /go
|
||||||
path: src/deadbeef.codes/steven/deadbeef.codes-publicfileserver
|
path: src/code.stevenpolley.net/steven/deadbeef.codes-publicfileserver
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: build
|
- name: build
|
||||||
@ -20,5 +20,5 @@ steps:
|
|||||||
- name: publish
|
- name: publish
|
||||||
image: plugins/docker
|
image: plugins/docker
|
||||||
settings:
|
settings:
|
||||||
repo: registry.deadbeef.codes/deadbeef.codes-publicfileserver
|
repo: registry.stevenpolley.net/deadbeef.codes-publicfileserver
|
||||||
|
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
FROM scratch
|
FROM scratch
|
||||||
|
LABEL maintainer="himself@stevenpolley.net"
|
||||||
COPY deadbeef.codes-publicfileserver /
|
COPY deadbeef.codes-publicfileserver /
|
||||||
EXPOSE 8080:8080
|
EXPOSE 8080:8080
|
||||||
ENTRYPOINT ["/deadbeef.codes-publicfileserver"]
|
ENTRYPOINT ["/deadbeef.codes-publicfileserver"]
|
43
README.md
43
README.md
@ -6,9 +6,52 @@ 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.
|
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](https://golang.org/dl/).
|
||||||
|
2. Then, install [Docker](https://docs.docker.com/engine/install/ubuntu/) - 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
|
||||||
|
|
||||||
|
```shell
|
||||||
|
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, you’ll 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.
|
||||||
|
|
||||||
|
```shell
|
||||||
|
docker build -t publicfileserver:latest .
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example docker-compose.yml
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
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
|
## Usage
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
git clone https://deadbeef.codes/steven/deadbeef.codes-publicfileserver.git
|
git clone https://deadbeef.codes/steven/deadbeef.codes-publicfileserver.git
|
||||||
|
docker build -t publicfileserver:latest .
|
||||||
docker-compose up -d
|
docker-compose up -d
|
||||||
```
|
```
|
||||||
|
@ -2,7 +2,7 @@ version: '3.7'
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
publicfileserver:
|
publicfileserver:
|
||||||
image: registry.deadbeef.codes/deadbeef.codes-publicfileserver:latest
|
image: publicfileserver:latest
|
||||||
restart: always
|
restart: always
|
||||||
ports:
|
ports:
|
||||||
- 8080:8080
|
- 8080:8080
|
||||||
|
3
go.mod
Normal file
3
go.mod
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module deadbeef.codes/steven/deadbeef.codes-publicfileserver
|
||||||
|
|
||||||
|
go 1.20
|
3
main.go
3
main.go
@ -1,7 +1,6 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
@ -19,5 +18,5 @@ func main() {
|
|||||||
log.Println("started public fileserver on 8080")
|
log.Println("started public fileserver on 8080")
|
||||||
|
|
||||||
<-stop
|
<-stop
|
||||||
fmt.Println("Shutting server down...")
|
log.Println("Shutting server down...")
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user