From 78e2e3cd3dc471e46fa8625d0515f6f3a13b66ed Mon Sep 17 00:00:00 2001 From: Kenneth Date: Fri, 6 Dec 2024 23:31:45 +0000 Subject: [PATCH] add fly deploy stuff and update layout --- .dockerignore | 24 ++++++++++++++++++++++ Dockerfile | 46 ++++++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 202319 -> 209194 bytes fly.toml | 22 ++++++++++++++++++++ package.json | 1 + src/assets/logo.svg | 11 ---------- src/pages/index.astro | 14 ++++++------- 7 files changed, 99 insertions(+), 19 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 fly.toml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..16d54bb --- /dev/null +++ b/.dockerignore @@ -0,0 +1,24 @@ +# build output +dist/ +# generated types +.astro/ + +# dependencies +node_modules/ + +# logs +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* + + +# environment variables +.env +.env.production + +# macOS-specific files +.DS_Store + +# jetbrains setting folder +.idea/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..9c1d484 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,46 @@ +# syntax = docker/dockerfile:1 + +# Adjust BUN_VERSION as desired +ARG BUN_VERSION=1.1.38 +FROM oven/bun:${BUN_VERSION}-slim as base + +LABEL fly_launch_runtime="Bun" + +# Bun app lives here +WORKDIR /app + +# Set production environment +ENV NODE_ENV="production" + + +# Throw-away build stage to reduce size of final image +FROM base as build + +# Install packages needed to build node modules +RUN apt-get update -qq && \ + apt-get install --no-install-recommends -y build-essential pkg-config python-is-python3 + +# Install node modules +COPY bun.lockb package.json ./ +RUN bun install + +# Copy application code +COPY . . + +# Build application +RUN bun --bun run build + +# Remove development dependencies +RUN rm -rf node_modules && \ + bun install --ci + + +# Final stage for app image +FROM nginx + +# Copy built application +COPY --from=build /app/dist /usr/share/nginx/html + +# Start the server by default, this can be overwritten at runtime +EXPOSE 80 +CMD [ "/usr/sbin/nginx", "-g", "daemon off;" ] diff --git a/bun.lockb b/bun.lockb index 35c74f0b7d933cfd4c9514e9343a312f291c2b43..0e47561ea96b0a431b77743e23a256dc0ca04e99 100755 GIT binary patch delta 33195 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 delta 28496 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 tYf - - - - - - - - - - diff --git a/src/pages/index.astro b/src/pages/index.astro index ba319c6..e77976d 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -11,18 +11,16 @@ import { SITE_TITLE, SITE_DESCRIPTION } from '../consts'; - -
+ +
Athen Lab
-
-

Athen Lab is an independent lab that conducts open-source machine learning research.

+
+

Athen Lab is an independent machine learning research lab. We believe that AI should be open source and widely available.

The current research is to build a state-of-the-art AI image detector.

-

Find me on x.com to follow the research.

+


+

Founded by Kenneth. Find me on x.com.

-