61 lines
1.6 KiB
Docker
61 lines
1.6 KiB
Docker
# 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
|
|
|
|
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
|
|
|
|
ADD entrypoint.sh /entrypoint.sh
|
|
ADD configure.py /configure.py
|
|
|
|
VOLUME /semaphore
|
|
|
|
ENTRYPOINT ["/entrypoint.sh"]
|