# Build container # ================================= FROM python:3.11 AS build RUN python -m pip install pip --upgrade RUN curl -sSL -o /install-poetry.py https://install.python-poetry.org RUN python /install-poetry.py --yes ADD . /build WORKDIR /build RUN /root/.local/bin/poetry self add poetry-plugin-export RUN /root/.local/bin/poetry export \ --format requirements.txt \ --output /build/requirements.txt \ --without-hashes RUN python -m pip wheel \ --wheel-dir /build/wheels \ --requirement /build/requirements.txt \ --disable-pip-version-check \ --no-cache-dir # Runtime container # ================================== FROM python:3.11-slim ARG OPENTOFU_VERSION ARG SEMAPHORE_VERSION ENV SEMAPHORE_RUNNER_CONFIG_FILE /semaphore/config.json COPY --from=build /build/wheels /tmp/wheels RUN apt-get update --yes && \ apt-get install --yes \ openssh-client \ apt-transport-https \ ca-certificates \ curl \ gnupg && \ mkdir --parents /tmp/apt && \ curl -sSL -o /tmp/apt/opentofu.deb https://github.com/opentofu/opentofu/releases/download/v${OPENTOFU_VERSION}/tofu_${OPENTOFU_VERSION}_amd64.deb && \ curl -sSL -o /tmp/apt/semaphore.deb https://github.com/ansible-semaphore/semaphore/releases/download/v${SEMAPHORE_VERSION}/semaphore_${SEMAPHORE_VERSION}_linux_amd64.deb && \ apt-get install --yes /tmp/apt/*.deb && \ apt-get clean --yes && \ rm -rf /tmp/apt && \ python -m pip install /tmp/wheels/*.whl \ --upgrade \ --pre \ --no-index \ --no-cache-dir \ --find-links /tmp/wheels \ --disable-pip-version-check && \ rm -rf /tmp/wheels && \ mkdir --parents /semaphore ADD entrypoint.sh /entrypoint.sh ADD configure.py /configure.py ENTRYPOINT ["/entrypoint.sh"]