first
This commit is contained in:
commit
0e949bb56f
16
Dockerfile
Normal file
16
Dockerfile
Normal file
@ -0,0 +1,16 @@
|
||||
# FROM mileschou/lapis:alpine as wasted.audio
|
||||
FROM openresty/openresty:1.27.1.2-4-alpine-fat
|
||||
|
||||
ENV LAPIS_VERSION=1.16.0
|
||||
|
||||
RUN apk add openssl-dev git
|
||||
RUN opm get spacewander/luafilesystem
|
||||
RUN luarocks install luasec
|
||||
RUN luarocks install busted
|
||||
RUN luarocks install --check-lua-versions markov-text
|
||||
RUN luarocks install lapis ${LAPIS_VERSION}
|
||||
RUN luarocks install moonscript
|
||||
|
||||
WORKDIR /srv/lapis
|
||||
|
||||
CMD lapis server $ENVIRONMENT
|
||||
32
code/app.lua
Normal file
32
code/app.lua
Normal file
@ -0,0 +1,32 @@
|
||||
local lapis = require("lapis")
|
||||
local config = require("lapis.config").get()
|
||||
local json_params = require("lapis.application").json_params
|
||||
|
||||
local app = lapis.Application()
|
||||
app:enable("etlua")
|
||||
app.layout = require "views.layout"
|
||||
|
||||
local autoload = require("lapis.util").autoload
|
||||
local handlers = autoload("handlers")
|
||||
|
||||
local page_titles = {
|
||||
name = "DRMR",
|
||||
url = "drmr.nl"
|
||||
}
|
||||
|
||||
app:get("/", function(self)
|
||||
self.titles = page_titles
|
||||
return handlers.Roothandler(self)
|
||||
end)
|
||||
|
||||
app:get("videos", "/videos", function(self)
|
||||
self.titles = page_titles
|
||||
return handlers.Videohandler(self)
|
||||
end)
|
||||
|
||||
app:get("links", "/links", function(self)
|
||||
self.titles = page_titles
|
||||
return handlers.Linkhandler(self)
|
||||
end)
|
||||
|
||||
return app
|
||||
22
code/config.lua
Normal file
22
code/config.lua
Normal file
@ -0,0 +1,22 @@
|
||||
local config = require("lapis.config")
|
||||
config({"development", "production"}, {
|
||||
host = "drmr.nl",
|
||||
greeting = "Totally Wasted",
|
||||
mount = "/mnt/data/",
|
||||
postgres = {
|
||||
host = "postgres",
|
||||
user = "postgres",
|
||||
password = "the_password",
|
||||
database = "postgres"
|
||||
}
|
||||
})
|
||||
|
||||
config("production", {
|
||||
greeting = "nothing here yet",
|
||||
postgres = {
|
||||
password = os.getenv('POSTGRES_PASSWORD')
|
||||
},
|
||||
logging = {
|
||||
queries = false
|
||||
}
|
||||
})
|
||||
55
code/drmr/utils.lua
Normal file
55
code/drmr/utils.lua
Normal file
@ -0,0 +1,55 @@
|
||||
local lfs = require("lfs_ffi")
|
||||
local cjson = require("cjson")
|
||||
|
||||
local utils = {}
|
||||
|
||||
-- we want to list the contents of a dir
|
||||
function utils:dirlist( path )
|
||||
local files, dirs, images, audio = {}, {}, {}, {}
|
||||
for file in lfs.dir( path ) do
|
||||
local filepath = path .. "/" .. file
|
||||
local attribute = lfs.attributes( filepath, "mode" ) or "nil"
|
||||
if file ~= "." and file ~= ".." and not string.match(file, ".filepart") then
|
||||
if lfs.attributes( filepath, "mode" ) == "file" then
|
||||
if utils:match_image( file ) then
|
||||
table.insert( images, file )
|
||||
elseif utils:match_audio( file) then
|
||||
table.insert( audio, file )
|
||||
else
|
||||
table.insert( files, file )
|
||||
end
|
||||
elseif lfs.attributes( filepath, "mode" ) == "directory" then
|
||||
table.insert( dirs, file )
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.sort( images )
|
||||
table.sort( files )
|
||||
table.sort( dirs )
|
||||
table.sort( audio )
|
||||
|
||||
local stuff = {
|
||||
files = files,
|
||||
dirs = dirs,
|
||||
images = images,
|
||||
audio = audio
|
||||
}
|
||||
return stuff
|
||||
end
|
||||
|
||||
-- open a json file and return the table
|
||||
function utils:opendata( path )
|
||||
local data = io.open(path)
|
||||
if data then
|
||||
local data_file = data:read("a")
|
||||
data:close()
|
||||
local data_decode = cjson.decode(data_file)
|
||||
|
||||
return data_decode
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
return utils
|
||||
14
code/handlers/linkhandler.lua
Normal file
14
code/handlers/linkhandler.lua
Normal file
@ -0,0 +1,14 @@
|
||||
local autoload = require("lapis.util").autoload
|
||||
local config = require("lapis.config").get()
|
||||
|
||||
local utils = require("drmr.utils")
|
||||
|
||||
local drmr = autoload("drmr")
|
||||
|
||||
local function Linkhandler(self)
|
||||
self.promo = utils:opendata(config.mount .. "promo.json")
|
||||
|
||||
return { render = "links"}
|
||||
end
|
||||
|
||||
return Linkhandler
|
||||
24
code/handlers/roothandler.lua
Normal file
24
code/handlers/roothandler.lua
Normal file
@ -0,0 +1,24 @@
|
||||
local autoload = require("lapis.util").autoload
|
||||
local config = require("lapis.config").get()
|
||||
|
||||
local utils = require("drmr.utils")
|
||||
|
||||
local drmr = autoload("drmr")
|
||||
|
||||
local function Roothandler(self)
|
||||
|
||||
|
||||
local function compare( a, b )
|
||||
if a.stop == "current" or b.stop == "current" then
|
||||
return b.start < a.start
|
||||
end
|
||||
return a.stop > b.stop
|
||||
end
|
||||
-- table.sort(unsort_career.career, compare)
|
||||
|
||||
self.promo = utils:opendata(config.mount .. "promo.json")
|
||||
|
||||
return { render = "root"}
|
||||
end
|
||||
|
||||
return Roothandler
|
||||
15
code/handlers/videohandler.lua
Normal file
15
code/handlers/videohandler.lua
Normal file
@ -0,0 +1,15 @@
|
||||
local autoload = require("lapis.util").autoload
|
||||
local config = require("lapis.config").get()
|
||||
|
||||
local utils = require("drmr.utils")
|
||||
|
||||
local drmr = autoload("drmr")
|
||||
|
||||
local function Videohandler(self)
|
||||
|
||||
self.videos = utils:opendata(config.mount .. "videos.json")
|
||||
|
||||
return { render = "video"}
|
||||
end
|
||||
|
||||
return Videohandler
|
||||
83
code/mime.types
Normal file
83
code/mime.types
Normal file
@ -0,0 +1,83 @@
|
||||
types {
|
||||
text/html html htm shtml;
|
||||
text/css css;
|
||||
text/xml xml;
|
||||
image/gif gif;
|
||||
image/jpeg jpeg jpg;
|
||||
application/x-lua lua;
|
||||
application/x-moonscript moon;
|
||||
application/x-javascript js;
|
||||
application/atom+xml atom;
|
||||
application/rss+xml rss;
|
||||
application/json json;
|
||||
application/x-bittorrent torrent;
|
||||
|
||||
text/mathml mml;
|
||||
text/plain txt;
|
||||
text/vnd.sun.j2me.app-descriptor jad;
|
||||
text/vnd.wap.wml wml;
|
||||
text/x-component htc;
|
||||
|
||||
image/png png;
|
||||
image/tiff tif tiff;
|
||||
image/vnd.wap.wbmp wbmp;
|
||||
image/x-icon ico;
|
||||
image/x-jng jng;
|
||||
image/x-ms-bmp bmp;
|
||||
image/svg+xml svg svgz;
|
||||
image/webp webp;
|
||||
|
||||
application/java-archive jar war ear;
|
||||
application/mac-binhex40 hqx;
|
||||
application/msword doc;
|
||||
application/pdf pdf;
|
||||
application/postscript ps eps ai;
|
||||
application/rtf rtf;
|
||||
application/vnd.ms-excel xls;
|
||||
application/vnd.ms-powerpoint ppt;
|
||||
application/vnd.wap.wmlc wmlc;
|
||||
application/vnd.google-earth.kml+xml kml;
|
||||
application/vnd.google-earth.kmz kmz;
|
||||
application/x-7z-compressed 7z;
|
||||
application/x-cocoa cco;
|
||||
application/x-java-archive-diff jardiff;
|
||||
application/x-java-jnlp-file jnlp;
|
||||
application/x-makeself run;
|
||||
application/x-perl pl pm;
|
||||
application/x-pilot prc pdb;
|
||||
application/x-rar-compressed rar;
|
||||
application/x-redhat-package-manager rpm;
|
||||
application/x-sea sea;
|
||||
application/x-shockwave-flash swf;
|
||||
application/x-stuffit sit;
|
||||
application/x-tcl tcl tk;
|
||||
application/x-x509-ca-cert der pem crt;
|
||||
application/x-xpinstall xpi;
|
||||
application/xhtml+xml xhtml;
|
||||
application/zip zip;
|
||||
|
||||
application/octet-stream bin exe dll;
|
||||
application/octet-stream deb;
|
||||
application/octet-stream dmg;
|
||||
application/octet-stream eot;
|
||||
application/octet-stream iso img;
|
||||
application/octet-stream msi msp msm;
|
||||
|
||||
audio/midi mid midi kar;
|
||||
audio/mpeg mp3;
|
||||
audio/ogg ogg;
|
||||
audio/x-m4a m4a;
|
||||
audio/x-realaudio ra;
|
||||
|
||||
video/3gpp 3gpp 3gp;
|
||||
video/mp4 mp4;
|
||||
video/mpeg mpeg mpg;
|
||||
video/quicktime mov;
|
||||
video/webm webm;
|
||||
video/x-flv flv;
|
||||
video/x-m4v m4v;
|
||||
video/x-mng mng;
|
||||
video/x-ms-asf asx asf;
|
||||
video/x-ms-wmv wmv;
|
||||
video/x-msvideo avi;
|
||||
}
|
||||
50
code/nginx.conf
Normal file
50
code/nginx.conf
Normal file
@ -0,0 +1,50 @@
|
||||
worker_processes ${{NUM_WORKERS}};
|
||||
error_log stderr notice;
|
||||
daemon off;
|
||||
pid logs/nginx.pid;
|
||||
|
||||
env POSTGRES_PASSWORD;
|
||||
env STATION_SECRET_1;
|
||||
env STATION_SECRET_2;
|
||||
env STATION_SECRET_3;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
resolver 127.0.0.11;
|
||||
|
||||
init_by_lua_block {
|
||||
require("socket")
|
||||
require("lpeg")
|
||||
math.randomseed(os.time()+ngx.worker.id())
|
||||
}
|
||||
|
||||
server {
|
||||
listen ${{PORT}};
|
||||
lua_code_cache ${{CODE_CACHE}};
|
||||
|
||||
add_header Access-Control-Allow-Origin *;
|
||||
|
||||
location /data/ {
|
||||
root /mnt;
|
||||
}
|
||||
|
||||
location /static/ {
|
||||
alias static/;
|
||||
}
|
||||
|
||||
location / {
|
||||
default_type text/html;
|
||||
content_by_lua_block {
|
||||
require("lapis").serve("app")
|
||||
}
|
||||
}
|
||||
|
||||
location /favicon.ico {
|
||||
alias static/favicon.ico;
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
code/static/favicon.ico
Normal file
BIN
code/static/favicon.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
308
code/static/style.css
Normal file
308
code/static/style.css
Normal file
@ -0,0 +1,308 @@
|
||||
* {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
:root {
|
||||
--main-bg-color: #222222;
|
||||
--base-bg-color: #111111;
|
||||
--text-color: #9d9d9d;
|
||||
--wstd-green: #28a07d;
|
||||
--wstd-yellow: #d5af14;
|
||||
--wstd-blue: #186da1;
|
||||
--wstd-red: #FF473D;
|
||||
--wstd-purple: #662042;
|
||||
}
|
||||
|
||||
body {
|
||||
width: 95%;
|
||||
padding-left: 0%;
|
||||
padding-right: 0%;
|
||||
background-color: var(--main-bg-color);
|
||||
font-family: monospace;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.footer {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 5px 12px;
|
||||
}
|
||||
|
||||
.p
|
||||
{
|
||||
color: #7e7e7e;
|
||||
margin-bottom: 45px;
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.nav_bar {
|
||||
width: 90%;
|
||||
font-size: 12px;
|
||||
margin: auto;
|
||||
text-align: center;
|
||||
color: var(--text-color);
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.nav_drmr {
|
||||
text-decoration: none;
|
||||
background: var(--base-bg-color);
|
||||
display: inline-flex;
|
||||
margin: 4px;
|
||||
padding: 5px 12px;
|
||||
}
|
||||
|
||||
.nav_drmr:hover {
|
||||
animation: pulse 1.5s infinite;
|
||||
}
|
||||
|
||||
.ascii
|
||||
{
|
||||
vertical-align: center;
|
||||
background: var(--base-bg-color);
|
||||
display: inline-flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
margin: 4px;
|
||||
padding: 5px 12px;
|
||||
border-radius: 20px;
|
||||
color: var(--text-color);
|
||||
line-height: 1.1em;
|
||||
white-space: pre;
|
||||
text-align:left;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
|
||||
/* == root page == */
|
||||
.root
|
||||
{
|
||||
width: 90%;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 40px;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
||||
.rootcontainer
|
||||
{
|
||||
width: 100%;
|
||||
float: left;
|
||||
clear: both;
|
||||
justify-content: space-evenly;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.roottext
|
||||
{
|
||||
text-align: center;
|
||||
color: var(--text-color);
|
||||
font-weight: 600;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
background: var(--base-bg-color);
|
||||
/* display: inline-flex; */
|
||||
/* margin: 4px; */
|
||||
padding: 5px 12px;
|
||||
border-radius: 20px;
|
||||
/* column-count: 2; */
|
||||
margin: auto;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 40px;
|
||||
float: center;
|
||||
clear: both;
|
||||
display: flex;
|
||||
width: 250px;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
||||
.rootdesc
|
||||
{
|
||||
text-align: center;
|
||||
color: var(--text-color);
|
||||
font-weight: 600;
|
||||
font-size: 13px;
|
||||
text-decoration: none;
|
||||
background: var(--base-bg-color);
|
||||
padding: 5px 12px;
|
||||
border-radius: 20px;
|
||||
margin: auto;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 40px;
|
||||
float: center;
|
||||
clear: both;
|
||||
display: flex;
|
||||
width: 300px;
|
||||
justify-content: space-evenly;
|
||||
white-space: pre-line;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.videos
|
||||
{
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
||||
.releasevideo
|
||||
{
|
||||
height: 220px;
|
||||
width: 350px;
|
||||
color: var(--text-color);
|
||||
font-weight: 600;
|
||||
font-size: 10px;
|
||||
text-decoration: none;
|
||||
background: var(--base-bg-color);
|
||||
display: inline-flex;
|
||||
margin: 4px;
|
||||
padding: 15px 12px;
|
||||
border-radius: 20px;
|
||||
}
|
||||
|
||||
.releaseembed
|
||||
{
|
||||
max-height:185px;
|
||||
max-width:330px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 5px;
|
||||
border-radius: 15px;
|
||||
object-fit: cover;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ytembed
|
||||
{
|
||||
height: 185px;
|
||||
width: 330px;
|
||||
}
|
||||
|
||||
.link, .link:visited
|
||||
{
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.rootdesc:hover {
|
||||
animation: pulse 2s infinite;
|
||||
}
|
||||
|
||||
@keyframes pulse {
|
||||
0% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(40, 160, 125, 1);
|
||||
}
|
||||
|
||||
70% {
|
||||
-webkit-box-shadow: 0 0 0 10px rgba(255, 0, 0, 0);
|
||||
}
|
||||
|
||||
100% {
|
||||
-webkit-box-shadow: 0 0 0 0 rgba(255, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 600px) {
|
||||
body {
|
||||
padding-left: 5%;
|
||||
padding-right: 5%;
|
||||
}
|
||||
|
||||
.ascii {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.roottext {
|
||||
font-size: 12px;
|
||||
width: 300px;
|
||||
}
|
||||
|
||||
.rootdesc {
|
||||
font-size: 15px;
|
||||
width: 450px;
|
||||
}
|
||||
|
||||
.nav_bar {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.releasevideo
|
||||
{
|
||||
height: 280px;
|
||||
min-width:460px;
|
||||
font-size: 12px;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.releaseembed
|
||||
{
|
||||
max-height:247px;
|
||||
max-width:440px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 5px;
|
||||
border-radius: 15px;
|
||||
object-fit: cover;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ytembed
|
||||
{
|
||||
height: 247px;
|
||||
width: 440px;
|
||||
}
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
body {
|
||||
padding-left: 10%;
|
||||
padding-right: 10%;
|
||||
}
|
||||
|
||||
.ascii {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.roottext {
|
||||
font-size: 15px;
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
.rootdesc {
|
||||
font-size: 18px;
|
||||
width: 550px;
|
||||
}
|
||||
|
||||
.nav_bar {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.releasevideo
|
||||
{
|
||||
height: 350px;
|
||||
min-width: 580px;
|
||||
margin: 6px;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.releaseembed
|
||||
{
|
||||
max-height:315px;
|
||||
max-width:560px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
margin: 5px;
|
||||
border-radius: 15px;
|
||||
object-fit: cover;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ytembed
|
||||
{
|
||||
height: 315px;
|
||||
width: 560px;
|
||||
}
|
||||
}
|
||||
5
code/views/about.etlua
Normal file
5
code/views/about.etlua
Normal file
@ -0,0 +1,5 @@
|
||||
<div class="rootdesc">
|
||||
<% for i, item in ipairs(promo.description) do %>
|
||||
<%= item %> <br>
|
||||
<% end %>
|
||||
</div>
|
||||
25
code/views/layout.etlua
Normal file
25
code/views/layout.etlua
Normal file
@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title><%= titles['name'] %>
|
||||
<% if title then %>
|
||||
- <%= title %>
|
||||
<% end %>
|
||||
</title>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="/static/style.css">
|
||||
</head>
|
||||
<body class="body">
|
||||
<div class="root">
|
||||
<div class="rootcontainer">
|
||||
|
||||
<% render("views.navigation") %>
|
||||
<% content_for("inner") %>
|
||||
|
||||
<div class="rootdesc">bookings <at> puikheid.nl</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
7
code/views/links.etlua
Normal file
7
code/views/links.etlua
Normal file
@ -0,0 +1,7 @@
|
||||
<% for i, item in ipairs(promo.links) do %>
|
||||
<a class="link" href="<%= item.url %>">
|
||||
<div class="rootdesc">
|
||||
<%= item.name %><br>
|
||||
</div>
|
||||
</a>
|
||||
<% end %>
|
||||
17
code/views/navigation.etlua
Normal file
17
code/views/navigation.etlua
Normal file
@ -0,0 +1,17 @@
|
||||
<li style="text-align: center;"><span class="ascii">
|
||||
________ __________ _____ __________
|
||||
\______ \\______ \ / \\______ \
|
||||
| | \| _/ / \ / \| _/
|
||||
| ` \ | \/ Y \ | \
|
||||
/_______ /____|_ /\____|__ /____|_ /
|
||||
\/ \/ \/ \/
|
||||
</span></li>
|
||||
<br>
|
||||
|
||||
<div class="nav_bar">
|
||||
<a class="nav_drmr" href="/"><span style="color:#ffffff !important;">About</span></a>
|
||||
<a class="nav_drmr" href="<%= url_for("videos") %>"><span style="color:#ffffff !important;">Live</span></a>
|
||||
<a class="nav_drmr" href="<%= url_for("links") %>"><span style="color:#ffffff !important;">Online</span></a>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
5
code/views/root.etlua
Normal file
5
code/views/root.etlua
Normal file
@ -0,0 +1,5 @@
|
||||
<div class="rootdesc">
|
||||
<% for i, item in ipairs(promo.description) do %>
|
||||
<%= item %> <br>
|
||||
<% end %>
|
||||
</div>
|
||||
20
code/views/video.etlua
Normal file
20
code/views/video.etlua
Normal file
@ -0,0 +1,20 @@
|
||||
<div class="videos">
|
||||
|
||||
<% for i, item in ipairs(videos.videos) do %>
|
||||
<div class="releasevideo">
|
||||
<div class="releaseembed">
|
||||
<iframe class="ytembed"
|
||||
src="https://www.youtube.com/embed/<%= item %>"
|
||||
title="YouTube video player"
|
||||
frameborder="0"
|
||||
showinfo=0
|
||||
autohide=1
|
||||
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
|
||||
referrerpolicy="strict-origin-when-cross-origin"
|
||||
allowfullscreen>
|
||||
</iframe>
|
||||
</div>
|
||||
</div>
|
||||
<% end %>
|
||||
|
||||
</div>
|
||||
26
docker-compose-local.yaml
Normal file
26
docker-compose-local.yaml
Normal file
@ -0,0 +1,26 @@
|
||||
services:
|
||||
drmr.nl:
|
||||
environment:
|
||||
- ENVIRONMENT
|
||||
build: .
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- ./code:/srv/lapis
|
||||
- /media/drmr.nl:/mnt/data
|
||||
labels:
|
||||
- traefik.enable=true
|
||||
- traefik.http.routers.wasted.rule=Host(`drmr.nl`)
|
||||
- traefik.http.routers.wasted.entrypoints=web
|
||||
- traefik.http.routers.wasted.middlewares=redirect-https-wasted
|
||||
- traefik.http.middlewares.redirect-https-wasted.redirectscheme.scheme=https
|
||||
|
||||
- traefik.http.routers.wasted_ssl.rule=Host(`drmr.nl`)
|
||||
- traefik.http.routers.wasted_ssl.entrypoints=websecure
|
||||
- traefik.http.routers.wasted_ssl.tls.certresolver=myresolver
|
||||
|
||||
- traefik.http.services.wasted.loadbalancer.server.port=8080
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
16
docker-compose.yaml
Normal file
16
docker-compose.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
services:
|
||||
drmr.nl:
|
||||
environment:
|
||||
- ENVIRONMENT
|
||||
build: .
|
||||
networks:
|
||||
- web
|
||||
volumes:
|
||||
- ./code:/srv/lapis
|
||||
- ./_assets:/mnt/data
|
||||
ports:
|
||||
- "8083:8080"
|
||||
|
||||
networks:
|
||||
web:
|
||||
external: true
|
||||
Loading…
Reference in New Issue
Block a user