From 0d9fbe034fa7b69c5a46ab4cd9575a57bc4dcf4d Mon Sep 17 00:00:00 2001 From: deng Date: Wed, 5 Nov 2025 10:32:38 +0800 Subject: [PATCH] deploy --- .gitignore | 5 ++++- Dockerfile | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 4 +++- 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 Dockerfile diff --git a/.gitignore b/.gitignore index df4bfdb..116fecd 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,7 @@ wheels/ .venv # Ruff -.ruff_cache \ No newline at end of file +.ruff_cache + +# Files +*.tar \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..84aa908 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,51 @@ +# Modified by official dockerfile sample(https://github.com/astral-sh/uv-docker-example/blob/main/Dockerfile) +# Use a Python image with uv pre-installed +FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim + +# Setup a non-root user +RUN groupadd --system --gid 999 nonroot \ + && useradd --system --gid 999 --uid 999 --create-home nonroot + +# Install the project into `/app` +WORKDIR /app + +# Enable bytecode compilation +ENV UV_COMPILE_BYTECODE=1 + +# Copy from the cache instead of linking since it's a mounted volume +ENV UV_LINK_MODE=copy + +# Ensure installed tools can be executed out of the box +ENV UV_TOOL_BIN_DIR=/usr/local/bin + +# Install the project's dependencies using the lockfile and settings +RUN --mount=type=cache,target=/root/.cache/uv \ + --mount=type=bind,source=uv.lock,target=uv.lock \ + --mount=type=bind,source=pyproject.toml,target=pyproject.toml \ + uv sync --locked --no-install-project --no-dev + +# Then, add the rest of the project source code and install it +# Installing separately from its dependencies allows optimal layer caching +COPY ./embrace_life /app +COPY pyproject.toml /app +COPY uv.lock /app +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --locked --no-dev + +# Place executables in the environment at the front of the path +ENV PATH="/app/.venv/bin:$PATH" + +# Reset the entrypoint, don't invoke `uv` +ENTRYPOINT [] + +# Use the non-root user to run our application +USER nonroot + +# Run the Streamlit application by default +ENV TZ="Asia/Taipei" +EXPOSE 8503 +CMD ["python", "-m", "streamlit", "run", "app.py", "--server.port=8503", "--server.enableCORS=false", "--server.enableXsrfProtection=false"] + +# Build +# docker build --platform=linux/amd64 -t embracelife:latest . +# docker save -o embracelife.tar embracelife:latest \ No newline at end of file diff --git a/README.md b/README.md index 675ee2b..b78a972 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ ## Abstract 還記得有天騎摩托車在太原路準備去上班,天氣微陰,天空中有淡淡薄雲,但光還算透得去,我抬頭看見那陽光透過路樹的枝葉之間, -忽然意識到,我就這樣在太原路上死掉的可能性,並非為零吧?如果是這樣的話,那我現在想做什麼呢? +忽然意識到,我就這樣在太原路上死掉的可能性,並非為零吧?自己忽然死掉,好像也會造成家人的麻煩,如果是這樣的話,那我現在想做什麼呢? 大概就是寫一份遺囑了吧 + +[embracelife](https://embracelife.guineapig.love/) ## Requirements * Hardware