From 3e8d543f5296e5fea62f2acbaf22fee76d64c59f Mon Sep 17 00:00:00 2001 From: Liam Steckler Date: Sat, 5 Jul 2025 21:03:14 -0700 Subject: [PATCH] Initial docker image --- .woodpecker/docker-buildx.yml | 21 +++++++++++++++ .woodpecker/inactive/docker-buildx.yml | 33 ----------------------- Dockerfile | 36 ++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 33 deletions(-) create mode 100644 .woodpecker/docker-buildx.yml delete mode 100644 .woodpecker/inactive/docker-buildx.yml create mode 100644 Dockerfile diff --git a/.woodpecker/docker-buildx.yml b/.woodpecker/docker-buildx.yml new file mode 100644 index 0000000..32ed36b --- /dev/null +++ b/.woodpecker/docker-buildx.yml @@ -0,0 +1,21 @@ +when: + branch: main + event: + - push + +variables: + - &repo scm.gruezi.net/buckbanzai/crossposter + +steps: + publish: + image: docker.io/woodpeckerci/plugin-docker-buildx:latest + settings: + repo: *repo + registry: scm.gruezi.net + tags: latest + username: woodpecker_bot + password: + from_secret: FORGEJO_PACKAGES_API_TOKEN + platforms: linux/amd64,linux/arm64 + when: + event: push diff --git a/.woodpecker/inactive/docker-buildx.yml b/.woodpecker/inactive/docker-buildx.yml deleted file mode 100644 index 301b339..0000000 --- a/.woodpecker/inactive/docker-buildx.yml +++ /dev/null @@ -1,33 +0,0 @@ -when: - branch: main - event: [push, pull_request] - -variables: - - &file Dockerfile - - &repo scm.gruezi.net/${CI_REPO} - -steps: - dryrun: - image: woodpeckerci/plugin-docker-buildx - settings: - dockerfile: *file - platforms: linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le - dry_run: true - repo: *repo - tags: latest - when: - event: pull_request - - publish: - image: woodpeckerci/plugin-docker-buildx - settings: - dockerfile: *file - platforms: linux/arm/v7,linux/arm64/v8,linux/amd64,linux/ppc64le - repo: *repo - registry: scm.gruezi.net - tags: latest - username: ${CI_REPO_OWNER} - password: - from_secret: FORGEJO_API_TOKEN - when: - event: push diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f0dfdba --- /dev/null +++ b/Dockerfile @@ -0,0 +1,36 @@ +# An example using multi-stage image builds to create a final image without uv. + +# First, build the application in the `/app` directory. +# See `Dockerfile` for details. +FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim AS builder +ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy + +# Disable Python downloads, because we want to use the system interpreter +# across both images. If using a managed Python version, it needs to be +# copied from the build image into the final image; see `standalone.Dockerfile` +# for an example. +ENV UV_PYTHON_DOWNLOADS=0 + +WORKDIR /app +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 +COPY . /app +RUN --mount=type=cache,target=/root/.cache/uv \ + uv sync --locked --no-dev + + +# Then, use a final image without uv +FROM python:3.12-slim-bookworm +# It is important to use the image that matches the builder, as the path to the +# Python executable must be the same, e.g., using `python:3.11-slim-bookworm` +# will fail. + +# Copy the application from the builder +COPY --from=builder --chown=app:app /app /app + +# Place executables in the environment at the front of the path +ENV PATH="/app/.venv/bin:$PATH" + +CMD ["python", "scl.py"] \ No newline at end of file