diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 000000000..5c9cf1569 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,5 @@ +node_modules +.git +.gitignore +dist +cache diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 000000000..6aecc882d --- /dev/null +++ b/Dockerfile @@ -0,0 +1,21 @@ +FROM node:21-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" +RUN corepack enable +COPY . /app +WORKDIR /app + +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile + +FROM base AS build +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile +RUN pnpm run docs:build + +FROM base +COPY --from=prod-deps /app/node_modules /app/node_modules +COPY --from=build /app/docs/.vitepress/dist /app/docs/.vitepress/dist + +EXPOSE 4173 + +CMD ["pnpm", "docs:preview"] diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 000000000..021de6b1b --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,15 @@ +services: + docs: + networks: [fmhy] + build: + context: . + dockerfile: Dockerfile + image: fmhy-docs + container_name: docs + restart: unless-stopped + ports: + - '4173:4173' + + +networks: + fmhy: diff --git a/docs/other/selfhosting.md b/docs/other/selfhosting.md index 4f4f6df0a..af2dea4d0 100644 --- a/docs/other/selfhosting.md +++ b/docs/other/selfhosting.md @@ -13,6 +13,25 @@ Do note that you **must** differentiate your instance from the official site (fm #### Prerequisites +### Docker (Experimental) + +You will need to install Docker and Docker Compose run your own instance of FMHY locally. + +- [Docker](https://docs.docker.com/get-docker/) +- [Docker Compose](https://docs.docker.com/compose/install/) + +After installing Docker and Docker Compose, run the following commands: + +```bash +git clone https://github.com/fmhy/edit.git +cd edit +sudo docker compose up --build +``` + +It should take a few minutes to build the image and start the container, running at port 4173. + +### Manually + - [Git](https://git-scm.com/downloads) - [Node.js](https://nodejs.org/en/download/) - Use the latest available LTS, doesn't matter much - [pnpm 9.12.2 or newer](https://pnpm.io/installation) @@ -104,4 +123,4 @@ You may want to disable NSFW content (sidebar entry, page contents) and/or the A rm -rf docs/.vitepress/cache rm -rf docs/.vitepress/dist pnpm install - ``` \ No newline at end of file + ```