From ba8b7784322ed2846e334f08ea0538e40ff0494e Mon Sep 17 00:00:00 2001 From: Robin Dunn Date: Fri, 17 Jun 2022 17:01:13 -0700 Subject: [PATCH] Add new docker images, retire older ones --- docker/build/debian-11/Dockerfile | 65 +++++++++++++++++++++++ docker/build/fedora-35/Dockerfile | 65 +++++++++++++++++++++++ docker/build/fedora-36/Dockerfile | 65 +++++++++++++++++++++++ docker/build/ubuntu-22.04/Dockerfile | 77 ++++++++++++++++++++++++++++ docker/tasks.py | 11 +++- 5 files changed, 282 insertions(+), 1 deletion(-) create mode 100644 docker/build/debian-11/Dockerfile create mode 100644 docker/build/fedora-35/Dockerfile create mode 100644 docker/build/fedora-36/Dockerfile create mode 100644 docker/build/ubuntu-22.04/Dockerfile diff --git a/docker/build/debian-11/Dockerfile b/docker/build/debian-11/Dockerfile new file mode 100644 index 00000000..61d06396 --- /dev/null +++ b/docker/build/debian-11/Dockerfile @@ -0,0 +1,65 @@ +# The base image (v11 == "bullseye") +FROM debian:bullseye + +# Set environment variables +ENV DIST_NAME=debian-11 +ENV USER=wxpy +ENV HOME=/home/$USER +ENV PYTHONUNBUFFERED=1 +ENV PATH=$HOME/bin:$PATH +ENV GTK2_OK=no + +# Update and install basic OS packages +RUN \ + apt-get update; \ + apt-get upgrade -y; \ + apt-get install -y \ + apt-utils \ + build-essential \ + software-properties-common \ + sudo nano; \ +# Set up a user, and etc. + mkdir -p /dist; \ + adduser --disabled-password --gecos "" ${USER}; \ + echo "${USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ +# Install development packages needed for building wxPython + apt-get install -y \ + freeglut3 \ + freeglut3-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + libgstreamer-plugins-base1.0-dev \ + libgtk-3-dev \ + libjpeg-dev \ + libnotify-dev \ + libsdl2-dev \ + libsm-dev \ + libtiff-dev \ + libwebkit2gtk-4.0-dev \ + libxtst-dev; \ + apt-get clean; + +# Install all available Python packages and their dev packages +RUN \ + apt-get install -y python3.9 python3.9-dev libpython3.9-dev python3.9-venv; \ + apt-get clean; + + +# Set the user and group to use for the rest of the commands +USER ${USER}:${USER} + +# Set the working directory +WORKDIR ${HOME} + +# Create virtual environments for each Python +RUN \ + cd ${HOME}; \ + mkdir -p ${HOME}/venvs; \ + python3.9 -m venv venvs/Py39; + +# Add files from host into the container +COPY scripts ${HOME}/bin + +# Define default command +CMD ["/bin/bash", "-l"] + diff --git a/docker/build/fedora-35/Dockerfile b/docker/build/fedora-35/Dockerfile new file mode 100644 index 00000000..ef5e1606 --- /dev/null +++ b/docker/build/fedora-35/Dockerfile @@ -0,0 +1,65 @@ +# The base image +FROM fedora:35 + +# Set environment variables +ENV DIST_NAME=fedora-35 +ENV USER=wxpy +ENV HOME=/home/$USER +ENV PYTHONUNBUFFERED=1 +ENV PATH=$HOME/bin:$PATH +ENV GTK2_OK=no + +# Update and install basic OS packages +RUN \ + dnf -y update; \ + dnf -y group install "Development Tools"; \ + dnf -y install gcc-c++ sudo nano which; \ +# Set up a user, and etc. + mkdir -p /dist; \ + adduser -m ${USER}; \ + echo "${USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ +# Install development packages needed for building wxPython + dnf install -y \ + freeglut-devel \ + gstreamer1-devel \ + gstreamer1-plugins-base-devel \ + gtk3-devel \ + libjpeg-turbo-devel \ + libnotify-devel \ + libpng-devel \ + libSM-devel \ + libtiff-devel \ + libXtst-devel \ + SDL-devel \ + webkit2gtk3-devel \ + which; + +RUN \ +# Install all available Python packages and their dev packages + dnf -y install python3 python3-tools python3-devel; \ + dnf -y install python3.9 + +RUN \ +# Clean up dnf caches + dnf clean all; + + +# Set the user and group to use for the rest of the commands +USER ${USER}:${USER} + +# Set the working directory +WORKDIR ${HOME} + +# Create virtual environments for each Python +RUN \ + cd ${HOME}; \ + mkdir -p ${HOME}/venvs; \ + python3.9 -m venv venvs/Py39; \ + python3.10 -m venv venvs/Py310 + +# Add files from host into the container +COPY scripts ${HOME}/bin + +# Define default command +CMD ["/bin/bash", "-l"] + diff --git a/docker/build/fedora-36/Dockerfile b/docker/build/fedora-36/Dockerfile new file mode 100644 index 00000000..09312930 --- /dev/null +++ b/docker/build/fedora-36/Dockerfile @@ -0,0 +1,65 @@ +# The base image +FROM fedora:36 + +# Set environment variables +ENV DIST_NAME=fedora-36 +ENV USER=wxpy +ENV HOME=/home/$USER +ENV PYTHONUNBUFFERED=1 +ENV PATH=$HOME/bin:$PATH +ENV GTK2_OK=no + +# Update and install basic OS packages +RUN \ + dnf -y update; \ + dnf -y group install "Development Tools"; \ + dnf -y install gcc-c++ sudo nano which; \ +# Set up a user, and etc. + mkdir -p /dist; \ + adduser -m ${USER}; \ + echo "${USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ +# Install development packages needed for building wxPython + dnf install -y \ + freeglut-devel \ + gstreamer1-devel \ + gstreamer1-plugins-base-devel \ + gtk3-devel \ + libjpeg-turbo-devel \ + libnotify-devel \ + libpng-devel \ + libSM-devel \ + libtiff-devel \ + libXtst-devel \ + SDL-devel \ + webkit2gtk3-devel \ + which; + +RUN \ +# Install all available Python packages and their dev packages + dnf -y install python3 python3-tools python3-devel; \ + dnf -y install python3.9 + +RUN \ +# Clean up dnf caches + dnf clean all; + + +# Set the user and group to use for the rest of the commands +USER ${USER}:${USER} + +# Set the working directory +WORKDIR ${HOME} + +# Create virtual environments for each Python +RUN \ + cd ${HOME}; \ + mkdir -p ${HOME}/venvs; \ + python3.9 -m venv venvs/Py39; \ + python3.10 -m venv venvs/Py310 + +# Add files from host into the container +COPY scripts ${HOME}/bin + +# Define default command +CMD ["/bin/bash", "-l"] + diff --git a/docker/build/ubuntu-22.04/Dockerfile b/docker/build/ubuntu-22.04/Dockerfile new file mode 100644 index 00000000..47a32626 --- /dev/null +++ b/docker/build/ubuntu-22.04/Dockerfile @@ -0,0 +1,77 @@ +# The base image +FROM ubuntu:22.04 + +# Set environment variables +ENV DIST_NAME=ubuntu-22.04 +ENV USE_DEADSNAKES=yes +ENV USER=wxpy +ENV HOME=/home/$USER +ENV PYTHONUNBUFFERED=1 +ENV PATH=$HOME/bin:$PATH +ENV GTK2_OK=no +ENV DEBIAN_FRONTEND=noninteractive + +# Update and install basic OS packages +RUN \ + apt-get update; \ + apt-get upgrade -y; \ + apt-get install -y \ + apt-utils \ + build-essential \ + software-properties-common \ + sudo nano; \ + echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections; \ +# Set up a user, and sudo + mkdir -p /dist; \ + adduser --disabled-password --gecos "" ${USER}; \ + echo "${USER} ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers; \ +# Set a timezone + apt-get install -y tzdata; \ + ln -fs /usr/share/zoneinfo/America/Los_Angeles /etc/localtime; \ + dpkg-reconfigure -f noninteractive tzdata; \ +# Install development packages needed for building wxPython + apt-get install -y \ + freeglut3 \ + freeglut3-dev \ + libgl1-mesa-dev \ + libglu1-mesa-dev \ + libgstreamer-plugins-base1.0-dev \ + libgtk-3-dev \ + libjpeg-dev \ + libnotify-dev \ + libsdl2-dev \ + libsm-dev \ + libtiff-dev \ + libwebkit2gtk-4.0-dev \ + libxtst-dev; \ + apt-get clean; + +# Install all available Python packages and their dev packages +RUN \ + if [ ${USE_DEADSNAKES} = yes ]; then add-apt-repository ppa:deadsnakes/ppa; apt-get update; fi; \ + apt-get install -y python3.8 python3.8-dev libpython3.8-dev python3.8-venv; \ + apt-get install -y python3.9 python3.9-dev libpython3.9-dev python3.9-venv; \ + apt-get install -y python3.10 python3.10-dev libpython3.10-dev python3.10-venv; \ + apt-get clean; + +# Add files from host into the container +COPY scripts ${HOME}/bin +RUN chown -R ${USER}:${USER} ${HOME}/bin + +# Set the user and group to use for the rest of the commands +USER ${USER}:${USER} + +# Set the working directory +WORKDIR ${HOME} + +# Create virtual environments for each Python +RUN \ + cd ${HOME}; \ + mkdir -p ${HOME}/venvs; \ + python3.8 -m venv venvs/Py38; \ + python3.9 -m venv venvs/Py39; \ + python3.10 -m venv venvs/Py310; + +# Define default command +CMD ["/bin/bash", "-l"] + diff --git a/docker/tasks.py b/docker/tasks.py index 737c1c63..4506dfdf 100644 --- a/docker/tasks.py +++ b/docker/tasks.py @@ -20,7 +20,16 @@ HERE = os.path.abspath(os.path.dirname(__file__)) # Distros that have been promoted to Emeritus status. They can still be selected # manually, but will be excluded by default when selecting all images. -OLD = [ 'ubuntu-14.04', 'fedora-29', 'fedora-30', 'fedora-31' ] +OLD = [ 'debian-9', + 'ubuntu-14.04', + 'ubuntu-16.04', + 'ubuntu-18.04', + 'fedora-29', + 'fedora-30', + 'fedora-31', + 'fedora-32', + 'fedora-33', + ]