Skip to content

Commit

Permalink
TMP
Browse files Browse the repository at this point in the history
  • Loading branch information
jemrobinson committed Sep 30, 2024
1 parent 6a9a6f7 commit 5c82d5e
Showing 1 changed file with 27 additions and 24 deletions.
51 changes: 27 additions & 24 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,40 +15,43 @@ RUN apt-get update && \
dumb-init \
g++ \
gcc \
libldap2-dev \
libpq-dev \
libsasl2-dev \
patchelf \
pipx \
python3-dev \
wget \
&& \
pipx install hatch
pipx install auditwheel && \
pipx install hatch;

## Copy project files needed by hatch
COPY README.md pyproject.toml ./
COPY guacamole_user_sync guacamole_user_sync

## Build wheels for dependencies then use auditwheel to include shared libraries
## Use hatch to generate requirements file
## Note that we need to specify psycopg[c] in order to ensure that dependencies are included in the wheel
COPY README.md pyproject.toml ./
COPY guacamole_user_sync/*.py guacamole_user_sync/
RUN /root/.local/bin/hatch run pip freeze | grep -v "^-e" > requirements.txt && \
sed -i "s/psycopg=/psycopg[c]=/g" requirements.txt && \
python -m pip wheel --no-cache-dir --no-binary :all: --wheel-dir /app/repairable -r requirements.txt && \
python -m pip install auditwheel && \
mkdir -p /app/wheels && \
for WHEEL in /app/repairable/*.whl; do \
auditwheel repair --wheel-dir /app/wheels --plat manylinux_2_34_aarch64 "${WHEEL}" 2> /dev/null || mv "${WHEEL}" /app/wheels/; \
done;

## Build a separate pip wheel which can be used to install itself
sed -i "s/psycopg=/psycopg[c]=/g" requirements.txt

## Build a wheel for pip which can be used to install itself
RUN python -m pip wheel --no-cache-dir --wheel-dir /app/wheels pip && \
mv /app/wheels/pip*whl /app/wheels/pip-0-py3-none-any.whl
mv /app/wheels/pip*whl /app/wheels/pip-0-py3-none-any.whl;

## Build wheels for dependencies using auditwheel to include shared libraries
RUN python -m pip wheel --no-cache-dir --no-binary :all: --wheel-dir /app/repairable -r requirements.txt;
RUN for WHEEL in /app/repairable/*.whl; do \
echo "\nRepairing ${WHEEL}" && \
/root/.local/bin/auditwheel repair --wheel-dir /app/wheels --plat manylinux_2_34_aarch64 "${WHEEL}" || mv "${WHEEL}" /app/wheels/; \
done && \
rm -rf /app/repairable;

## Build a separate wheel for the project
## Build a wheel for guacamole_user_sync
COPY guacamole_user_sync guacamole_user_sync
RUN /root/.local/bin/hatch build -t wheel && \
mv dist/guacamole_user_sync*.whl /app/wheels/ && \
echo "guacamole-user-sync>=0.0" >> requirements.txt

## List all wheels
RUN ls -alh /app/wheels/;


# Build final image
FROM gcr.io/distroless/python3-debian12:debug

Expand All @@ -70,10 +73,10 @@ COPY synchronise.py .

## Install pip from wheel
RUN python /tmp/wheels/pip-0-py3-none-any.whl/pip install \
--break-system-packages \
--root-user-action ignore \
--no-index \
/tmp/wheels/pip-0-py3-none-any.whl && \
--break-system-packages \
--root-user-action ignore \
--no-index \
/tmp/wheels/pip-0-py3-none-any.whl && \
rm /tmp/wheels/pip-0-py3-none-any.whl

## Install Python packages from wheels
Expand Down

0 comments on commit 5c82d5e

Please sign in to comment.