diff --git a/Dockerfile b/Dockerfile index a69bf4f..0a32b35 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM imbios/bun-node:22-alpine AS base +FROM oven/bun:1.1.38-alpine AS base # Install dependencies into temp directory # This will cache them and speed up future builds @@ -6,18 +6,20 @@ FROM base AS install RUN mkdir -p /temp/dev COPY package.json bun.lockb /temp/dev/ -RUN cd /temp/dev && bun install --frozen-lockfile +RUN cd /temp/dev && bun install --production --frozen-lockfile FROM base AS builder COPY . /app COPY --from=install /temp/dev/node_modules /app/node_modules RUN cd /app && bun run emojis:generate -RUN cd /app && bun run build --preset bun +RUN cd /app && bun run build -FROM oven/bun:1.1.38-alpine AS final +# Run final web server +FROM ghcr.io/static-web-server/static-web-server:2-alpine AS final -COPY --from=builder /app/.output/ /app +COPY --from=builder /app/.output/public /app/public +COPY sws.toml /etc/config.toml LABEL org.opencontainers.image.authors="Gaspard Wierzbinski (https://cpluspatch.com)" LABEL org.opencontainers.image.source="https://github.com/versia-pub/frontend" @@ -27,4 +29,5 @@ LABEL org.opencontainers.image.title="Versia-FE" LABEL org.opencontainers.image.description="Frontend for the Versia Server Project" WORKDIR /app -CMD ["bun", "run", "server/index.mjs"] \ No newline at end of file +EXPOSE 3000 +CMD ["static-web-server", "--config-file", "/etc/config.toml"] \ No newline at end of file diff --git a/README.md b/README.md index 622445c..4bbbb30 100644 --- a/README.md +++ b/README.md @@ -83,6 +83,25 @@ Then, the frontend will be available at `http://localhost:3000` inside the conta > > You can set the `NUXT_PUBLIC_API_HOST` environment variable to point to a different Versia Server instance. +#### Manual + +1. Clone the repository. +```bash +git clone https://github.com/versia-pub/frontend.git +``` +2. Install dependencies. +```bash +bun install +``` +3. Build the project. +```bash +bun run build +``` +4. Serve the static files in the `.output/public` directory. +> [!WARNING] +> +> `.output/public/200.html` should be configured as a fallback for all 404 errors. + ## Development Run `bun run emojis:generate` to generate the emoji list before building or running the project. diff --git a/bun.lockb b/bun.lockb index 2254eae..8fc2b1a 100755 Binary files a/bun.lockb and b/bun.lockb differ diff --git a/sws.toml b/sws.toml new file mode 100644 index 0000000..1b28545 --- /dev/null +++ b/sws.toml @@ -0,0 +1,23 @@ +[general] + +#### Address & Root dir +host = "::" +port = 3000 +root = "/app/public" + +#### Logging +log-level = "error" + +#### Cache Control headers +cache-control-headers = true + +#### Auto Compression +compression = true +compression-level = "default" + +#### Error pages +# Note: If a relative path is used then it will be resolved under the root directory. +page404 = "./404.html" + +#### Page fallback for 404s +page-fallback = "./200.html"