diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c37ce2f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,19 @@ +FROM alpine:3.15.0 + +RUN apk add --no-cache git go && \ + mkdir /oko-server && \ + cd /oko-server && \ + git clone https://github.com/Cernobor/oko-server.git /oko-server/git && \ + cd /oko-server/git && \ + go build && \ + cp /oko-server/git/oko-server /oko-server/ && \ + cd /oko-server && \ + rm -rf /oko-server/git && \ + mkdir /data && \ + apk del git go && \ + rm -rf /root/go && \ + echo -e '#!/bin/sh\n/oko-server/oko-server "$@"' > /oko-server/entrypoint.sh && \ + chmod +x /oko-server/entrypoint.sh +VOLUME ["/data"] + +ENTRYPOINT ["/oko-server/entrypoint.sh"] \ No newline at end of file diff --git a/main.go b/main.go index a5301ec..d65b120 100644 --- a/main.go +++ b/main.go @@ -14,8 +14,9 @@ import ( ) func main() { - dbFileArg := flag.String("dbfile", "./data.sqlite3", "File that holds the server's sqlite3 database. Will be created if it does not exist. Default is \"./data.sqlite3\".") tilepackFileArg := flag.String("tilepack", "", "File that will be sent to clients when they request a tile pack, also used to serve tiles in online mode. Required.") + portArg := flag.Int("port", 8080, "Port where the server will listen to. Default is 8080.") + dbFileArg := flag.String("dbfile", "./data.sqlite3", "File that holds the server's sqlite3 database. Will be created if it does not exist. Default is \"./data.sqlite3\".") apkFileArg := flag.String("apk", "", "APK file with the client app. If not specified, no APK will be available (404).") reinitDBArg := flag.Bool("reinit-db", false, "Reinitializes the DB, which means all the tables will be recreated, deleting all data.") minZoomArg := flag.Int("min-zoom", 1, "Minimum zoom that will be sent to clients.") @@ -31,6 +32,7 @@ func main() { } s := server.New(server.ServerConfig{ + Port: *portArg, DbPath: *dbFileArg, TilepackPath: *tilepackFileArg, ApkPath: *apkFileArg, diff --git a/server/server.go b/server/server.go index a77d346..d7cc4bf 100644 --- a/server/server.go +++ b/server/server.go @@ -34,6 +34,7 @@ type Server struct { } type ServerConfig struct { + Port int DbPath string TilepackPath string ApkPath string @@ -59,7 +60,7 @@ func (s *Server) Run(ctx context.Context) { router := s.setupRouter() server := &http.Server{ - Addr: fmt.Sprintf(":%d", 8080), + Addr: fmt.Sprintf(":%d", s.config.Port), Handler: router, } s.log.Infof("Running on %s", server.Addr)