Simplify docker setup for examples.

This commit is contained in:
Sebastian Jeltsch
2024-11-20 17:03:19 +01:00
parent f0133fdffa
commit bd59c47d68
6 changed files with 70 additions and 262 deletions

View File

@@ -0,0 +1,11 @@
**/node_modules/
**/dist/
Dockerfile*
.docker*
.git/
.git*
*.image
.env

View File

@@ -1,39 +1,26 @@
# syntax = edrevo/dockerfile-plus
FROM node:20-slim AS builder
# NOTE: paths are relative to build context, which is trailbase's root otherwise we
# cannot build the trailbase server as well.
RUN npm install -g pnpm
RUN pnpm --version
INCLUDE+ Dockerfile
FROM chef AS webapp_builder
COPY examples/blog/web /app
COPY web /app
WORKDIR /app
RUN pnpm install --no-frozen-lockfile
RUN pnpm run build
RUN pnpm build
FROM debian:bookworm-slim AS runtime
RUN apt-get update && apt-get install -y --no-install-recommends tini curl
COPY --from=builder /app/target/x86_64-unknown-linux-gnu/release/trail /app/
COPY --from=webapp_builder /app/dist /app/public
# When `docker run` is executed, launch the binary as unprivileged user.
ENV USERNAME=trailbase
RUN adduser \
--disabled-password \
--gecos "" \
--home "$(pwd)" \
--no-create-home \
${USERNAME}
USER ${USERNAME}
FROM trailbase/trailbase:0.2.2 AS base
WORKDIR /app
COPY --from=builder /app/dist /app/public
COPY --chown=trailbase traildepot /app/traildepot
USER trailbase
EXPOSE 4000
ENTRYPOINT ["tini", "--"]
CMD ["/app/trail", "run"]
CMD ["/app/trail", "--data-dir", "/app/traildepot", "run", "--address", "0.0.0.0:4000", "--public-dir", "/app/public"]
HEALTHCHECK CMD curl --fail http://localhost:4000/api/healthcheck || exit 1

View File

@@ -23,7 +23,7 @@
"solid-icons": "^1.1.0",
"solid-js": "^1.9.3",
"tailwindcss": "^3.4.14",
"trailbase": "workspace:*"
"trailbase": "^0.1.2"
},
"devDependencies": {
"@astrojs/solid-js": "^4.4.2",

View File

@@ -0,0 +1,11 @@
**/node_modules/
**/dist/
Dockerfile*
.docker*
.git/
.git*
*.image
.env

View File

@@ -1,26 +1,33 @@
FROM node:20-slim AS builder
RUN npm install -g pnpm
RUN pnpm --version
COPY . /app
WORKDIR /app
RUN pnpm install --no-frozen-lockfile
RUN pnpm build
FROM trailbase/trailbase:0.2.2 AS base
USER root
RUN apk add --no-cache sqlite
# TODO: Add a dedicated build step, both for (re)building the database and
# building the web app.
WORKDIR /app
COPY dist /app/public
COPY traildepot /app/traildepot
COPY arabica_data_cleaned.csv /app/
COPY import.sql /app/
COPY --from=builder /app/dist /app/public
COPY --chown=trailbase traildepot /app/traildepot
USER trailbase
# Rebuild the database.
WORKDIR /app
COPY arabica_data_cleaned.csv /app/
COPY import.sql /app/
RUN mkdir -p /app/traildepot/data
RUN rm -rf /app/traildepot/data/*
RUN cat import.sql | sqlite3 traildepot/data/main.db
RUN chown -R trailbase /app/traildepot/data
USER trailbase
EXPOSE 4000
ENTRYPOINT ["tini", "--"]
CMD ["/app/trail", "--data-dir", "/app/traildepot", "run", "--address", "0.0.0.0:4000", "--public-dir", "/app/public"]

240
pnpm-lock.yaml generated
View File

@@ -120,10 +120,10 @@ importers:
dependencies:
'@astrojs/mdx':
specifier: ^3.1.9
version: 3.1.9(astro@4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4))
version: 3.1.9(astro@4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3))
'@astrojs/tailwind':
specifier: ^5.1.2
version: 5.1.2(astro@4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)))(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
version: 5.1.2(astro@4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)))(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
'@nanostores/persistent':
specifier: ^0.10.2
version: 0.10.2(nanostores@0.11.3)
@@ -132,7 +132,7 @@ importers:
version: 0.5.0(nanostores@0.11.3)(solid-js@1.9.3)
astro:
specifier: ^4.16.10
version: 4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4)
version: 4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3)
astro-icon:
specifier: ^1.1.2
version: 1.1.2
@@ -147,20 +147,20 @@ importers:
version: 1.9.3
tailwindcss:
specifier: ^3.4.14
version: 3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
version: 3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
trailbase:
specifier: workspace:*
version: link:../../../client/trailbase-ts
specifier: ^0.1.2
version: 0.1.2
devDependencies:
'@astrojs/solid-js':
specifier: ^4.4.2
version: 4.4.2(solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119)))(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119))
version: 4.4.2(solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0)))(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0))
'@iconify-json/tabler':
specifier: ^1.2.7
version: 1.2.7
'@tailwindcss/typography':
specifier: ^0.5.15
version: 0.5.15(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)))
version: 0.5.15(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)))
'@types/dateformat':
specifier: ^5.0.2
version: 5.0.2
@@ -4070,6 +4070,9 @@ packages:
resolution: {integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==}
engines: {node: '>=18'}
trailbase@0.1.2:
resolution: {integrity: sha512-kTRTyL7bpMrqbnZCSoCJ8aWfwhi2/BWypOX8kt6DIVhAZNa4+Z1tZJcmHZQ2XaOqmgbg+1yl+Zb5QLMPaGsA/g==}
trim-lines@3.0.1:
resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
@@ -4716,26 +4719,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/mdx@3.1.9(astro@4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4))':
dependencies:
'@astrojs/markdown-remark': 5.3.0
'@mdx-js/mdx': 3.1.0(acorn@8.14.0)
acorn: 8.14.0
astro: 4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4)
es-module-lexer: 1.5.4
estree-util-visit: 2.0.0
gray-matter: 4.0.3
hast-util-to-html: 9.0.3
kleur: 4.1.5
rehype-raw: 7.0.0
remark-gfm: 4.0.0
remark-smartypants: 3.0.2
source-map: 0.7.4
unist-util-visit: 5.0.0
vfile: 6.0.3
transitivePeerDependencies:
- supports-color
'@astrojs/mdx@3.1.9(astro@4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3))':
dependencies:
'@astrojs/markdown-remark': 5.3.0
@@ -4766,17 +4749,6 @@ snapshots:
stream-replace-string: 2.0.0
zod: 3.23.8
'@astrojs/solid-js@4.4.2(solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119)))(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119))':
dependencies:
solid-js: 1.9.3
vite-plugin-solid: 2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119))
optionalDependencies:
solid-devtools: 0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119))
transitivePeerDependencies:
- '@testing-library/jest-dom'
- supports-color
- vite
'@astrojs/solid-js@4.4.2(solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0)))(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0))':
dependencies:
solid-js: 1.9.3
@@ -4823,16 +4795,6 @@ snapshots:
transitivePeerDependencies:
- supports-color
'@astrojs/tailwind@5.1.2(astro@4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)))(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))':
dependencies:
astro: 4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4)
autoprefixer: 10.4.20(postcss@8.4.48)
postcss: 8.4.48
postcss-load-config: 4.0.2(postcss@8.4.48)(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
transitivePeerDependencies:
- ts-node
'@astrojs/tailwind@5.1.2(astro@4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3))(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)))(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))':
dependencies:
astro: 4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3)
@@ -5797,14 +5759,6 @@ snapshots:
dependencies:
tslib: 2.8.1
'@tailwindcss/typography@0.5.15(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)))':
dependencies:
lodash.castarray: 4.4.0
lodash.isplainobject: 4.0.6
lodash.merge: 4.6.2
postcss-selector-parser: 6.0.10
tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
'@tailwindcss/typography@0.5.15(tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)))':
dependencies:
lodash.castarray: 4.4.0
@@ -6238,85 +6192,6 @@ snapshots:
valid-filename: 4.0.0
zod: 3.23.8
astro@4.16.10(@types/node@16.18.119)(rollup@4.25.0)(typescript@4.9.4):
dependencies:
'@astrojs/compiler': 2.10.3
'@astrojs/internal-helpers': 0.4.1
'@astrojs/markdown-remark': 5.3.0
'@astrojs/telemetry': 3.1.0
'@babel/core': 7.26.0
'@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
'@babel/types': 7.26.0
'@oslojs/encoding': 1.1.0
'@rollup/pluginutils': 5.1.3(rollup@4.25.0)
'@types/babel__core': 7.20.5
'@types/cookie': 0.6.0
acorn: 8.14.0
aria-query: 5.3.2
axobject-query: 4.1.0
boxen: 8.0.1
ci-info: 4.0.0
clsx: 2.1.1
common-ancestor-path: 1.0.1
cookie: 0.7.2
cssesc: 3.0.0
debug: 4.3.7
deterministic-object-hash: 2.0.2
devalue: 5.1.1
diff: 5.2.0
dlv: 1.1.3
dset: 3.1.4
es-module-lexer: 1.5.4
esbuild: 0.21.5
estree-walker: 3.0.3
fast-glob: 3.3.2
flattie: 1.1.1
github-slugger: 2.0.0
gray-matter: 4.0.3
html-escaper: 3.0.3
http-cache-semantics: 4.1.1
js-yaml: 4.1.0
kleur: 4.1.5
magic-string: 0.30.12
magicast: 0.3.5
micromatch: 4.0.8
mrmime: 2.0.0
neotraverse: 0.6.18
ora: 8.1.1
p-limit: 6.1.0
p-queue: 8.0.1
preferred-pm: 4.0.0
prompts: 2.4.2
rehype: 13.0.2
semver: 7.6.3
shiki: 1.22.2
tinyexec: 0.3.1
tsconfck: 3.1.4(typescript@4.9.4)
unist-util-visit: 5.0.0
vfile: 6.0.3
vite: 5.4.11(@types/node@16.18.119)
vitefu: 1.0.3(vite@5.4.11(@types/node@16.18.119))
which-pm: 3.0.0
xxhash-wasm: 1.0.2
yargs-parser: 21.1.1
zod: 3.23.8
zod-to-json-schema: 3.23.5(zod@3.23.8)
zod-to-ts: 1.2.0(typescript@4.9.4)(zod@3.23.8)
optionalDependencies:
sharp: 0.33.5
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
- rollup
- sass
- sass-embedded
- stylus
- sugarss
- supports-color
- terser
- typescript
astro@4.16.10(@types/node@22.9.0)(rollup@4.25.0)(typescript@5.6.3):
dependencies:
'@astrojs/compiler': 2.10.3
@@ -8449,14 +8324,6 @@ snapshots:
camelcase-css: 2.0.1
postcss: 8.4.48
postcss-load-config@4.0.2(postcss@8.4.48)(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)):
dependencies:
lilconfig: 3.1.2
yaml: 2.6.0
optionalDependencies:
postcss: 8.4.48
ts-node: 10.9.2(@types/node@16.18.119)(typescript@4.9.4)
postcss-load-config@4.0.2(postcss@8.4.48)(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)):
dependencies:
lilconfig: 3.1.2
@@ -8950,20 +8817,6 @@ snapshots:
arg: 5.0.2
sax: 1.4.1
solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119)):
dependencies:
'@babel/core': 7.26.0
'@babel/plugin-syntax-typescript': 7.25.9(@babel/core@7.26.0)
'@babel/types': 7.26.0
'@solid-devtools/debugger': 0.23.4(solid-js@1.9.3)
'@solid-devtools/shared': 0.13.2(solid-js@1.9.3)
solid-js: 1.9.3
optionalDependencies:
vite: 5.4.11(@types/node@16.18.119)
transitivePeerDependencies:
- supports-color
optional: true
solid-devtools@0.30.1(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0)):
dependencies:
'@babel/core': 7.26.0
@@ -9143,33 +8996,6 @@ snapshots:
dependencies:
tailwindcss: 3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3))
tailwindcss@3.4.14(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4)):
dependencies:
'@alloc/quick-lru': 5.2.0
arg: 5.0.2
chokidar: 3.6.0
didyoumean: 1.2.2
dlv: 1.1.3
fast-glob: 3.3.2
glob-parent: 6.0.2
is-glob: 4.0.3
jiti: 1.21.6
lilconfig: 2.1.0
micromatch: 4.0.8
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.1.1
postcss: 8.4.48
postcss-import: 15.1.0(postcss@8.4.48)
postcss-js: 4.0.1(postcss@8.4.48)
postcss-load-config: 4.0.2(postcss@8.4.48)(ts-node@10.9.2(@types/node@16.18.119)(typescript@4.9.4))
postcss-nested: 6.2.0(postcss@8.4.48)
postcss-selector-parser: 6.1.2
resolve: 1.22.8
sucrase: 3.35.0
transitivePeerDependencies:
- ts-node
tailwindcss@3.4.14(ts-node@10.9.2(@types/node@22.9.0)(typescript@5.6.3)):
dependencies:
'@alloc/quick-lru': 5.2.0
@@ -9250,6 +9076,11 @@ snapshots:
dependencies:
punycode: 2.3.1
trailbase@0.1.2:
dependencies:
jwt-decode: 4.0.0
uuid: 11.0.3
trim-lines@3.0.1: {}
trough@2.2.0: {}
@@ -9312,10 +9143,6 @@ snapshots:
ts-poet: 6.9.0
ts-proto-descriptors: 2.0.0
tsconfck@3.1.4(typescript@4.9.4):
optionalDependencies:
typescript: 4.9.4
tsconfck@3.1.4(typescript@5.6.3):
optionalDependencies:
typescript: 5.6.3
@@ -9485,19 +9312,6 @@ snapshots:
- supports-color
- terser
vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@16.18.119)):
dependencies:
'@babel/core': 7.26.0
'@types/babel__core': 7.20.5
babel-preset-solid: 1.9.3(@babel/core@7.26.0)
merge-anything: 5.1.7
solid-js: 1.9.3
solid-refresh: 0.6.3(solid-js@1.9.3)
vite: 5.4.11(@types/node@16.18.119)
vitefu: 0.2.5(vite@5.4.11(@types/node@16.18.119))
transitivePeerDependencies:
- supports-color
vite-plugin-solid@2.10.2(solid-js@1.9.3)(vite@5.4.11(@types/node@22.9.0)):
dependencies:
'@babel/core': 7.26.0
@@ -9522,15 +9336,6 @@ snapshots:
- supports-color
- typescript
vite@5.4.11(@types/node@16.18.119):
dependencies:
esbuild: 0.21.5
postcss: 8.4.48
rollup: 4.25.0
optionalDependencies:
'@types/node': 16.18.119
fsevents: 2.3.3
vite@5.4.11(@types/node@22.9.0):
dependencies:
esbuild: 0.21.5
@@ -9540,18 +9345,10 @@ snapshots:
'@types/node': 22.9.0
fsevents: 2.3.3
vitefu@0.2.5(vite@5.4.11(@types/node@16.18.119)):
optionalDependencies:
vite: 5.4.11(@types/node@16.18.119)
vitefu@0.2.5(vite@5.4.11(@types/node@22.9.0)):
optionalDependencies:
vite: 5.4.11(@types/node@22.9.0)
vitefu@1.0.3(vite@5.4.11(@types/node@16.18.119)):
optionalDependencies:
vite: 5.4.11(@types/node@16.18.119)
vitefu@1.0.3(vite@5.4.11(@types/node@22.9.0)):
optionalDependencies:
vite: 5.4.11(@types/node@22.9.0)
@@ -9843,11 +9640,6 @@ snapshots:
dependencies:
zod: 3.23.8
zod-to-ts@1.2.0(typescript@4.9.4)(zod@3.23.8):
dependencies:
typescript: 4.9.4
zod: 3.23.8
zod-to-ts@1.2.0(typescript@5.6.3)(zod@3.23.8):
dependencies:
typescript: 5.6.3