realtime server Dockerfile
s-ol
3 years ago
0 | |
FROM nickblah/lua:5.3-luarocks-stretch AS build-env
|
1 | |
RUN echo "deb http://ppa.launchpad.net/jonathonf/tup/ubuntu xenial main" >/etc/apt/sources.list.d/tup.list
|
2 | |
RUN apt-get update
|
3 | |
RUN apt-get install -y --allow-unauthenticated build-essential tup sassc libmarkdown2-dev
|
|
0 |
FROM nickblah/lua:5.3-luarocks-stretch
|
|
1 |
|
|
2 |
RUN echo "deb http://ppa.launchpad.net/jonathonf/tup/ubuntu xenial main" \
|
|
3 |
>/etc/apt/sources.list.d/tup.list
|
|
4 |
RUN apt-get update && \
|
|
5 |
apt-get install -y --allow-unauthenticated \
|
|
6 |
build-essential m4 tup sassc \
|
|
7 |
libmarkdown2-dev libsqlite3-dev libssl-dev
|
|
8 |
RUN luarocks install discount DISCOUNT_INCDIR=/usr/include/x86_64-linux-gnu
|
4 | 9 |
RUN luarocks install moonscript
|
5 | |
RUN luarocks install discount DISCOUNT_INCDIR=/usr/include/x86_64-linux-gnu
|
6 | |
COPY . /build
|
7 | |
RUN cd /build && tup init && tup generate --config tup.docker.config build.sh && ./build.sh
|
|
10 |
RUN luarocks install sqlite3
|
|
11 |
RUN luarocks install http
|
8 | 12 |
|
9 | |
FROM nginx:alpine
|
10 | |
COPY --from=build-env /build/root /usr/share/nginx/html
|
11 | |
RUN chmod 555 -R /usr/share/nginx/html
|
|
13 |
COPY . /code
|
|
14 |
WORKDIR /code
|
|
15 |
RUN tup init && tup generate --config tup.docker.config build-static.sh && ./build-static.sh
|
|
16 |
|
|
17 |
EXPOSE 8000
|
|
18 |
ENTRYPOINT ["moon", "build/server.moon", "/db.sqlite3", "0.0.0.0", "8000"]
|
13 | 13 |
|
14 | 14 |
-- usage:
|
15 | 15 |
-- moon import.moon <root> [output.sqlite3]
|
16 | |
{ root, output } = arg
|
|
16 |
{ root, file } = arg
|
17 | 17 |
|
18 | 18 |
assert root, "please specify the root directory"
|
19 | 19 |
|
|
29 | 29 |
|
30 | 30 |
key, value
|
31 | 31 |
|
32 | |
with SQLStore name: output, verbose: true
|
|
32 |
with SQLStore :file, verbose: true
|
33 | 33 |
import_fileder = (fileder, dirpath) ->
|
34 | 34 |
for file in lfs.dir dirpath
|
35 | 35 |
continue if '.' == file\sub 1, 1
|
20 | 20 |
export BROWSER, STATIC
|
21 | 21 |
STATIC = true
|
22 | 22 |
|
23 | |
tree = load_tree SQLStore :name
|
|
23 |
tree = load_tree SQLStore :file
|
24 | 24 |
tree = tree\walk startpath if startpath
|
25 | 25 |
|
26 | 26 |
for fileder in coroutine.wrap tree\iterate
|
162 | 162 |
print msg
|
163 | 163 |
|
164 | 164 |
-- usage:
|
165 | |
-- moon server.moon [db.sqlite3]
|
166 | |
{ file } = arg
|
|
165 |
-- moon server.moon [db.sqlite3] [host] [port]
|
|
166 |
{ file, host, port } = arg
|
167 | 167 |
|
168 | 168 |
tree = load_tree SQLStore :file
|
169 | |
server = Server tree
|
|
169 |
server = Server tree, :host, port: port and tonumber port
|
170 | 170 |
server\listen!
|
1 | 1 |
|
2 | 2 |
class SQLStore
|
3 | 3 |
new: (opts = {}) =>
|
4 | |
opts.name or= 'db.sqlite3'
|
|
4 |
opts.file or= 'db.sqlite3'
|
5 | 5 |
opts.verbose or= false
|
6 | 6 |
opts.memory or= false
|
7 | 7 |
|
|
12 | 12 |
@log "opening in-memory DB..."
|
13 | 13 |
@db = sqlite.open_memory!
|
14 | 14 |
else
|
15 | |
@log "opening '#{opts.name}'..."
|
16 | |
@db = sqlite.open opts.name
|
|
15 |
@log "opening '#{opts.file}'..."
|
|
16 |
@db = sqlite.open opts.file
|
17 | 17 |
|
18 | 18 |
assert @db\exec [[
|
19 | 19 |
PRAGMA foreign_keys = ON;
|