diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a82aa32 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,47 @@ +# Dependencies and build outputs +node_modules +build +lib + +# Git +.git +.gitignore + +# CI/CD and tooling +.github +.husky +tests + +# Documentation +docs +*.md +LICENSE +CODE_OF_CONDUCT.md +CODEOWNERS + +# Logs +*.log +npm-debug.log* +pnpm-debug.log* + +# Environment files +.env +.env.local +.env.development + +# OS files +.DS_Store + +# IDE +.vscode +.idea +*.swp +*.swo +*~ + +# Coverage +coverage + +# Dev scripts +desktop.mjs +utils diff --git a/Dockerfile b/Dockerfile index 88439fe..57d934f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,13 +1,13 @@ -FROM node:20-alpine AS build +FROM node:24-alpine AS build WORKDIR /src RUN corepack enable && corepack prepare pnpm@10 --activate COPY package.json pnpm-lock.yaml ./ -RUN pnpm install --frozen-lockfile +RUN pnpm install --frozen-lockfile --ignore-scripts COPY . . -RUN pnpm run build +RUN pnpm run prepare -FROM node:20-alpine AS final -RUN corepack enable && corepack prepare pnpm@10 --activate && pnpm add -g serve +FROM node:24-alpine AS final +RUN npm install -g serve WORKDIR /app COPY --from=build /src/build . EXPOSE 8080 diff --git a/README.md b/README.md index 63f94df..1e80160 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,12 @@ docker build . -t bee-dashboard docker run --rm -p 127.0.0.1:8080:8080 bee-dashboard ``` +Alternatively, use Docker Compose: + +```sh +docker compose up +``` + Bee dashboard is now available on [`http://localhost:8080`](http://localhost:8080) ### Development diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..7809098 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +services: + bee-dashboard: + build: . + image: ethersphere/bee-dashboard:latest + ports: + - '127.0.0.1:8080:8080' + restart: unless-stopped diff --git a/public/serve.json b/public/serve.json index 44493d4..89b44f9 100644 --- a/public/serve.json +++ b/public/serve.json @@ -1,12 +1,15 @@ { - "trailingSlash": false, - "headers": [ + "rewrites": [{ "source": "**", "destination": "/index.html" }], + "trailingSlash": false, + "headers": [ + { + "source": "*", + "headers": [ { - "source" : "*", - "headers" : [{ - "key" : "Cache-Control", - "value" : "max-age=3600" - }] + "key": "Cache-Control", + "value": "max-age=3600" } - ] + ] + } + ] }