Compare commits
3 Commits
a6b8cf31fe
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| b6627d3cd3 | |||
| bc3256cc4c | |||
| 2d97f02929 |
17
Dockerfile
17
Dockerfile
@@ -1,32 +1,31 @@
|
|||||||
FROM alpine AS build
|
FROM alpine AS build
|
||||||
|
|
||||||
RUN apk add --no-cache lua5.4-dev lua5.4-luv make gcc pkgconf util-linux-misc
|
RUN apk add --no-cache lua5.4-dev lua5.4-luv build-base pkgconf util-linux-misc
|
||||||
|
|
||||||
WORKDIR /build
|
WORKDIR /build
|
||||||
|
|
||||||
COPY src ./src/
|
COPY src ./src/
|
||||||
COPY lib ./lib/
|
COPY lib ./lib/
|
||||||
COPY Makefile ./Makefile
|
COPY Makefile ./Makefile
|
||||||
|
COPY deps ./deps
|
||||||
|
|
||||||
RUN ln -s /usr/lib/liblua-5.4.so.0 /usr/lib/liblua.so.5.4
|
RUN ln -s /usr/lib/liblua-5.4.so.0 /usr/lib/liblua.so.5.4
|
||||||
RUN make
|
RUN make LUA=lua5.4
|
||||||
|
|
||||||
FROM alpine
|
FROM alpine
|
||||||
|
|
||||||
EXPOSE 8080
|
EXPOSE 8080
|
||||||
|
|
||||||
VOLUME /plugins
|
VOLUME /data
|
||||||
VOLUME /views
|
|
||||||
VOLUME /static
|
|
||||||
VOLUME /config
|
|
||||||
|
|
||||||
STOPSIGNAL SIGINT
|
STOPSIGNAL SIGINT
|
||||||
|
|
||||||
HEALTHCHECK --interval=30s --start-period=1s CMD curl localhost:8080/.well-known/keepalive | grep "OK"
|
HEALTHCHECK --interval=30s --start-period=1s CMD curl localhost:8080/.well-known/keepalive | grep "OK"
|
||||||
ENTRYPOINT ./bin/website
|
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /
|
||||||
|
|
||||||
RUN apk add --no-cache lua5.4 lua5.4-luv
|
RUN apk add --no-cache lua5.4 lua5.4-luv
|
||||||
|
|
||||||
COPY --from=build ./bin/website .
|
COPY --from=build /build/bin/website .
|
||||||
|
|
||||||
|
CMD [ "./website", "./data/config.lua" ]
|
||||||
|
|||||||
8
Makefile
8
Makefile
@@ -42,15 +42,15 @@ compile_flags.txt:
|
|||||||
printf -- '$(foreach v,$(CCARGS) $(LDARGS),\n$v)' > compile_flags.txt
|
printf -- '$(foreach v,$(CCARGS) $(LDARGS),\n$v)' > compile_flags.txt
|
||||||
|
|
||||||
$(OUTPUT): $(LIBS) $(MKLUA_OUT) $(SOURCES) | $(dir $(OUTPUT))
|
$(OUTPUT): $(LIBS) $(MKLUA_OUT) $(SOURCES) | $(dir $(OUTPUT))
|
||||||
$(CC) $(CCARGS) $(LDARGS) $^ -o $@
|
$(CC) $(CCARGS) $^ $(LDARGS) -o $@
|
||||||
|
|
||||||
$(MKLUA_OUT): $(DEPS) | $(dir $(MKLUA_OUT)) $(MKLUA)
|
$(MKLUA_OUT): $(DEPS) | $(dir $(MKLUA_OUT)) $(MKLUA)
|
||||||
$(MKLUA) $(MKLUA_FLAGS) $(MKLUA_ENTRY) -o $@
|
$(MKLUA) $(MKLUA_FLAGS) $(MKLUA_ENTRY) -o $@
|
||||||
|
|
||||||
deps/mklua/mklua:
|
deps/mklua/Makefile:
|
||||||
|
|
||||||
$(MKLUA):
|
|
||||||
git submodule update --init deps/mklua
|
git submodule update --init deps/mklua
|
||||||
|
|
||||||
|
$(MKLUA): deps/mklua/Makefile
|
||||||
make -C deps/mklua
|
make -C deps/mklua
|
||||||
%/:
|
%/:
|
||||||
mkdir -p $@
|
mkdir -p $@
|
||||||
|
|||||||
2
deps/mklua
vendored
2
deps/mklua
vendored
Submodule deps/mklua updated: 318928ddbc...5f343c2126
@@ -270,7 +270,7 @@ local function http_read_req(stream)
|
|||||||
|
|
||||||
local type, path, version = line:match "^(%S-) (%S-) HTTP/(%S-)\r\n$";
|
local type, path, version = line:match "^(%S-) (%S-) HTTP/(%S-)\r\n$";
|
||||||
if not type then return nil, "unexpected format" end
|
if not type then return nil, "unexpected format" end
|
||||||
if version ~= "1.1" then return nil, "only HTTP 1.1 supported" end
|
if version ~= "1.1" and version ~= "1.0" then return nil, "only HTTP 1.1/1.0 supported, got " .. version end
|
||||||
|
|
||||||
local headers, err = http_read_headers(stream);
|
local headers, err = http_read_headers(stream);
|
||||||
if not headers then return nil, err end
|
if not headers then return nil, err end
|
||||||
@@ -288,7 +288,7 @@ local function http_read_res(stream)
|
|||||||
|
|
||||||
local version, code = line:match "^HTTP/(%S-) (%S-) (.-)\r\n$";
|
local version, code = line:match "^HTTP/(%S-) (%S-) (.-)\r\n$";
|
||||||
if not version then return nil, "unexpected format" end
|
if not version then return nil, "unexpected format" end
|
||||||
if version ~= "1.1" then return nil, "only HTTP 1.1 supported" end
|
if version ~= "1.1" and version ~= "1.0" then return nil, "only HTTP 1.1/1.0 supported, got " .. version end
|
||||||
|
|
||||||
local headers, err = http_read_headers(stream);
|
local headers, err = http_read_headers(stream);
|
||||||
if not headers then return nil, err end
|
if not headers then return nil, err end
|
||||||
|
|||||||
12
src/sync/sig.lua
Normal file
12
src/sync/sig.lua
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
--- @param sig uv.aliases.signals
|
||||||
|
--- @param cb fun(num: uv.aliases.signals): false?
|
||||||
|
return function (sig, cb)
|
||||||
|
local self = assert(uv.new_signal());
|
||||||
|
|
||||||
|
uv.signal_start(self, sig, function (num)
|
||||||
|
if cb(num) == false then
|
||||||
|
uv.signal_stop(self);
|
||||||
|
uv.close(self);
|
||||||
|
end
|
||||||
|
end);
|
||||||
|
end
|
||||||
@@ -2,6 +2,7 @@ require "utils.printing";
|
|||||||
require "template";
|
require "template";
|
||||||
require "plugin.breadcrumbs";
|
require "plugin.breadcrumbs";
|
||||||
require "plugin.navbar";
|
require "plugin.navbar";
|
||||||
|
local sig = require "sync.sig"
|
||||||
|
|
||||||
local sync = require "sync";
|
local sync = require "sync";
|
||||||
local tcp = require "sync.tcp";
|
local tcp = require "sync.tcp";
|
||||||
@@ -30,8 +31,18 @@ end
|
|||||||
|
|
||||||
return require "sync.entry" (function (...)
|
return require "sync.entry" (function (...)
|
||||||
-- Why a bad pipe manages to topple a whole process in unix is beyond me
|
-- Why a bad pipe manages to topple a whole process in unix is beyond me
|
||||||
local sigpipe = assert(uv.new_signal());
|
sig("sigpipe", function (num) end);
|
||||||
uv.signal_start(sigpipe, "sigpipe", function () end);
|
sig("sigint", function (num)
|
||||||
|
print "Gracefully exiting...";
|
||||||
|
uv.stop();
|
||||||
|
|
||||||
|
sig("sigint", function (num)
|
||||||
|
print "SIGINT repeated, forcefully exiting...";
|
||||||
|
os.exit(0);
|
||||||
|
end);
|
||||||
|
|
||||||
|
return false;
|
||||||
|
end);
|
||||||
|
|
||||||
local conf_file = ...;
|
local conf_file = ...;
|
||||||
local config = assert(loadfile(conf_file))();
|
local config = assert(loadfile(conf_file))();
|
||||||
|
|||||||
Reference in New Issue
Block a user