From a7b2713c0a38bfa763f09931c1eb7722dec71887 Mon Sep 17 00:00:00 2001 From: Kebo Date: Thu, 26 Jun 2025 13:30:21 -0500 Subject: [PATCH] button changes & attempts to make docker viable in the future --- .devcontainer/devcontainer.json | 6 +- .forgejo/workflows/docker-build.yaml | 1 - .gitignore | 2 + Dockerfile | 101 ++++++++++----------------- public/buttons/bentley_88x31.png | Bin 0 -> 10159 bytes src/pages/cool.mdx | 1 + 6 files changed, 43 insertions(+), 68 deletions(-) create mode 100644 public/buttons/bentley_88x31.png diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 2dae48e..d716608 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -10,15 +10,13 @@ }, "features": { "ghcr.io/devcontainers/features/node:1": {}, - "ghcr.io/astronomer/devcontainer-features/astro-cli:1": {}, - "ghcr.io/cirolosapio/devcontainers-features/alpine-git:0": {} - } + }, // Features to add to the dev container. More info: https://containers.dev/features. // "features": {}, // Use 'forwardPorts' to make a list of ports inside the container available locally. - // "forwardPorts": [], + "forwardPorts": [4321] // Uncomment the next line to run commands after the container is created. // "postCreateCommand": "cat /etc/os-release", diff --git a/.forgejo/workflows/docker-build.yaml b/.forgejo/workflows/docker-build.yaml index eca9812..35a4d9e 100644 --- a/.forgejo/workflows/docker-build.yaml +++ b/.forgejo/workflows/docker-build.yaml @@ -7,7 +7,6 @@ on: defaults: run: - shell: bash working-directory: /home/mom/git/eleboog-astro jobs: diff --git a/.gitignore b/.gitignore index 16d54bb..810079b 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,8 @@ pnpm-debug.log* .env .env.production +.pnpm-store + # macOS-specific files .DS_Store diff --git a/Dockerfile b/Dockerfile index 6a49a1a..f5b1738 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,79 +1,54 @@ -# syntax=docker/dockerfile:1 +# okay, let's figure this out -# Comments are provided throughout this file to help you get started. -# If you need more help, visit the Dockerfile reference guide at -# https://docs.docker.com/go/dockerfile-reference/ - -# Want to help us make this template better? Share your feedback here: https://forms.gle/ybq9Krt8jtBL3iCk7 - -ARG NODE_VERSION=23.3.0 -ARG PNPM_VERSION=9.10.0 - -################################################################################ -# Use node image for base image for all stages. -FROM node:${NODE_VERSION}-alpine AS base - -# Set working directory for all build stages. -WORKDIR /usr/src/app - -# Install pnpm. -RUN --mount=type=cache,target=/root/.npm \ - npm install -g pnpm@${PNPM_VERSION} +FROM node:23.11-slim AS base +ENV PNPM_HOME="/pnpm" +ENV PATH="$PNPM_HOME:$PATH" RUN corepack enable -################################################################################ -# Create a stage for installing production dependecies. -FROM base AS deps +WORKDIR /app -# Download dependencies as a separate step to take advantage of Docker's caching. -# Leverage a cache mount to /root/.local/share/pnpm/store to speed up subsequent builds. -# Leverage bind mounts to package.json and pnpm-lock.yaml to avoid having to copy them -# into this layer. -RUN --mount=type=bind,source=package.json,target=package.json \ - --mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \ - --mount=type=cache,target=/root/.local/share/pnpm/store \ - pnpm install --prod --frozen-lockfile +# By copying only the package.json and package-lock.json here, we ensure that the following `-deps` steps are independent of the source code. +# Therefore, the `-deps` steps will be skipped if only the source code changes. +COPY package.json pnpm-lock.yaml ./ -################################################################################ -# Create a stage for building the application. -FROM deps AS build +FROM base AS prod-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --prod --frozen-lockfile -# Download additional development dependencies before building, as some projects require -# "devDependencies" to be installed to build. If you don't need this, remove this step. -RUN --mount=type=bind,source=package.json,target=package.json \ - --mount=type=bind,source=pnpm-lock.yaml,target=pnpm-lock.yaml \ - --mount=type=cache,target=/root/.local/share/pnpm/store \ - pnpm install --frozen-lockfile +FROM base AS build-deps +RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile -# Copy the rest of the source files into the image. +FROM build-deps AS build COPY . . -# Run the build script. RUN pnpm run build -################################################################################ -# Create a new stage to run the application with minimal runtime dependencies -# where the necessary files are copied from the build stage. -FROM base AS final +FROM base AS runtime +# Copy dependencies +COPY --from=prod-deps /app/node_modules ./node_modules +# Copy the built output +COPY --from=build /app/dist ./dist -# Use production node environment by default. -ENV NODE_ENV=production - -# Run the application as a non-root user. -USER node - -# Copy package.json so that package manager commands can be used. -COPY package.json . - -# Copy the production dependencies from the deps stage and also -# the built application from the build stage into the image. -COPY --from=deps /usr/src/app/node_modules ./node_modules -COPY --from=build /usr/src/app/dist ./dist - -# Expose the port that the application listens on. +# Bind to all interfaces ENV HOST=0.0.0.0 +# Port to listen on ENV PORT=4321 +# Just convention, not required EXPOSE 4321 -# Run the application. -CMD pnpm start +# Start the app +CMD ["node", "./dist/server/entry.mjs"] + +# Install NGINX +RUN apt-get update && apt-get install -y nginx && rm -rf /var/lib/apt/lists/* + +# Copy NGINX config +COPY nginx.conf /etc/nginx/nginx.conf + +# Serve static files from /app/dist/client +RUN mkdir -p /var/www/html && ln -s /app/dist/client /var/www/html + +# Expose NGINX port +EXPOSE 8080 + +# Start both NGINX and Node server +CMD service nginx start && node ./dist/server/entry.mjs \ No newline at end of file diff --git a/public/buttons/bentley_88x31.png b/public/buttons/bentley_88x31.png new file mode 100644 index 0000000000000000000000000000000000000000..10c195efb28a30f89ee79cd6e5e19a12250faff2 GIT binary patch literal 10159 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 W-z#oaXzKhq!IXQUBvme96!agyjG+|( literal 0 HcmV?d00001 diff --git a/src/pages/cool.mdx b/src/pages/cool.mdx index f8c67c7..762c4bd 100644 --- a/src/pages/cool.mdx +++ b/src/pages/cool.mdx @@ -15,6 +15,7 @@ I thought about making a blogroll, but I decided instead to make a button galler A button for 522 at 5snb dot club. A button for Foxscotch. A button for Sominemo. +A button for Bentley. { false && <>...and here's a list of friends I am publicly shaming into making buttons because I am a gremlin: