molecule-image/Dockerfile

158 lines
2.6 KiB
Docker

# This is a multi-stage build which requires Docker 17.05 or higher
FROM docker.io/alpine:edge as molecule-builder
WORKDIR /usr/src/molecule
# WARNING: Reasons not to add edge/testing:
# * Breaks security scanning due to https://github.com/quay/clair/issues/901
# * Unreliable builds, as alpinelinux CDN is unreliable for edge, returning 404
# quite often.
# edge/testing needed for: py3-arrow
RUN apk add -v --progress --update --no-cache \
docker-py \
gcc \
git \
libffi-dev \
libvirt \
libvirt-dev \
make \
musl-dev \
openssl-dev \
py3-bcrypt \
py3-botocore \
py3-certifi \
py3-cffi \
py3-chardet \
py3-click \
py3-colorama \
py3-cryptography \
py3-distlib \
py3-docutils \
py3-flake8 \
py3-future \
py3-idna \
py3-jinja2 \
py3-libvirt \
py3-markupsafe \
py3-mccabe \
py3-netifaces \
py3-paramiko \
py3-pbr \
py3-pip \
py3-pluggy \
py3-psutil \
py3-ptyprocess \
py3-py \
py3-pycodestyle \
py3-pynacl \
py3-pytest \
py3-requests \
py3-ruamel \
py3-setuptools \
py3-simplejson \
py3-urllib3 \
py3-virtualenv \
py3-websocket-client \
py3-yaml \
python3 \
python3-dev
ENV MOLECULE_PLUGINS="\
molecule-hetznercloud
"
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=917006
RUN python3 -m pip install -U wheel pip setuptools
ADD . .
RUN \
python3 -m pip wheel \
-w dist \
molecule testinfra ${MOLECULE_PLUGINS}
RUN ls -1 dist/
# ✄---------------------------------------------------------------------
# This is an actual target container:
FROM alpine:edge
LABEL maintainer="decentral1se <decentral1se@disroot.org>"
ENV PACKAGES="\
docker \
git \
openssh-client \
docker-py \
libvirt \
rsync \
py3-bcrypt \
py3-botocore \
py3-certifi \
py3-cffi \
py3-chardet \
py3-click \
py3-colorama \
py3-cryptography \
py3-docutils \
py3-flake8 \
py3-idna \
py3-jinja2 \
py3-mccabe \
py3-netifaces \
py3-paramiko \
py3-pbr \
py3-pip \
py3-pluggy \
py3-psutil \
py3-ptyprocess \
py3-py \
py3-pycodestyle \
py3-pynacl \
py3-pytest \
py3-requests \
py3-ruamel \
py3-setuptools \
py3-urllib3 \
py3-virtualenv \
py3-websocket-client \
python3 \
"
ENV BUILD_DEPS="\
gcc \
libc-dev \
libvirt-dev \
make \
"
ENV PIP_INSTALL_ARGS="\
--only-binary :all: \
--no-index \
-f /usr/src/molecule/dist \
"
ENV MOLECULE_PLUGINS="\
molecule-hetznercloud \
"
RUN \
apk add --update --no-cache \
${BUILD_DEPS} ${PACKAGES} \
&& apk del --no-cache ${BUILD_DEPS} \
&& rm -rf /root/.cache
COPY --from=molecule-builder \
/usr/src/molecule/dist \
/usr/src/molecule/dist
RUN \
python3 -m pip install \
${PIP_INSTALL_ARGS} \
molecule testinfra ${MOLECULE_PLUGINS} && \
molecule --version && \
molecule drivers && \
pip check
ENV SHELL /bin/bash