diff --git a/.github/workflows/build-and-push.yml b/.github/workflows/build-and-push.yml index 243cd26a..452bfe29 100644 --- a/.github/workflows/build-and-push.yml +++ b/.github/workflows/build-and-push.yml @@ -22,14 +22,6 @@ jobs: tag: "c9s" image_name: "python-39-c9s" - - dockerfile: "3.9-minimal/Dockerfile.rhel8" - docker_context: "3.9-minimal" - registry_namespace: "sclorg" - quayio_username: "QUAY_IMAGE_SCLORG_BUILDER_USERNAME" - quayio_token: "QUAY_IMAGE_SCLORG_BUILDER_TOKEN" - tag: "el8" - image_name: "python-39-minimal-el8" - - dockerfile: "3.9-minimal/Dockerfile.c9s" docker_context: "3.9-minimal" registry_namespace: "sclorg" diff --git a/3.9-minimal/Dockerfile.rhel8 b/3.9-minimal/Dockerfile.rhel8 deleted file mode 100644 index 9d429591..00000000 --- a/3.9-minimal/Dockerfile.rhel8 +++ /dev/null @@ -1,104 +0,0 @@ -FROM ubi8/ubi-minimal:latest - - -EXPOSE 8080 - -ENV PYTHON_VERSION=3.9 \ - PYTHONUNBUFFERED=1 \ - PYTHONIOENCODING=UTF-8 \ - LC_ALL=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - CNB_STACK_ID=com.redhat.stacks.ubi8-python-39 \ - CNB_USER_ID=1001 \ - CNB_GROUP_ID=0 \ - PIP_NO_CACHE_DIR=off \ - # The following variables are usually available from parent s2i images \ - STI_SCRIPTS_PATH=/usr/libexec/s2i \ - APP_ROOT=/opt/app-root \ - HOME=/opt/app-root/src \ - PLATFORM="el8" - -# /opt/app-root/bin - the main venv -# /opt/app-root/src/bin - app-specific binaries -# /opt/app-root/src/.local/bin - tools like pipenv -ENV PATH=$APP_ROOT/bin:$HOME/bin:$HOME/.local/bin:$PATH - -# Ensure the virtual environment is active in interactive shells -ENV BASH_ENV=${APP_ROOT}/bin/activate \ - ENV=${APP_ROOT}/bin/activate \ - PROMPT_COMMAND=". ${APP_ROOT}/bin/activate" - -ENV SUMMARY="Minimal platform for building and running Python $PYTHON_VERSION applications" \ - DESCRIPTION="Python $PYTHON_VERSION available as container is a base platform for \ -building and running various Python $PYTHON_VERSION applications and frameworks. \ -Python is an easy to learn, powerful programming language. It has efficient high-level \ -data structures and a simple but effective approach to object-oriented programming. \ -Python's elegant syntax and dynamic typing, together with its interpreted nature, \ -make it an ideal language for scripting and rapid application development in many areas \ -on most platforms." - -LABEL summary="$SUMMARY" \ - description="$DESCRIPTION" \ - io.k8s.description="$DESCRIPTION" \ - io.k8s.display-name="Python 3.9" \ - io.openshift.expose-services="8080:http" \ - io.openshift.tags="builder,python,python39,python-39,rh-python39" \ - com.redhat.component="python-39-container" \ - name="ubi8/python-39-minimal" \ - usage="s2i build https://github.com/sclorg/s2i-python-container.git --context-dir=3.9-minimal/test/setup-test-app/ ubi8/python-39-minimal python-sample-app" \ - com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" \ - io.buildpacks.stack.id="com.redhat.stacks.ubi8-python-39-minimal" \ - maintainer="SoftwareCollections.org " - -# Very minimal set of packages -# Python is obvious in the Python container :) -# glibc-langpack-en is needed to set locale to en_US and disable warning about it -# findutils - find command is needed for fix-permissions script -# nss_wrapper - used in generate_container_user script -RUN INSTALL_PKGS="python39 glibc-langpack-en findutils nss_wrapper-libs" && \ - microdnf -y --setopt=tsflags=nodocs --setopt=install_weak_deps=0 install $INSTALL_PKGS && \ - microdnf -y clean all --enablerepo='*' - -# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH. -COPY 3.9-minimal/s2i/bin/ $STI_SCRIPTS_PATH - -# Copy extra files to the image. -COPY 3.9-minimal/root/ / - -# Python 3.7+ only -# Yes, the directory below is already copied by the previous command. -# The problem here is that the wheels directory is copied as a symlink. -# Only if you specify symlink directly as a source, COPY copies all the -# files from the symlink destination. -COPY 3.9-minimal/root/opt/wheels /opt/wheels - -# This command sets (and also creates if necessary) -# the home directory - it has to be done here so the latter -# fix-permissions fixes this directory as well. -WORKDIR ${HOME} - -# - Create a Python virtual environment for use by any application to avoid -# potential conflicts with Python packages preinstalled in the main Python -# installation. -# - In order to drop the root user, we have to make some directories world -# writable as OpenShift default security model is to run the container -# under random UID. -RUN \ - python3.9 -m venv ${APP_ROOT} && \ - # We have to upgrade pip to a newer version because \ - # pip < 19.3 does not support manylinux2014 wheels. Only manylinux2014 (and later) wheels \ - # support platforms like ppc64le, aarch64 or armv7 \ - # We are newly using wheel from one of the latest stable Fedora releases (from RPM python-pip-wheel) \ - # because it's tested better then whatever version from PyPI and contains useful patches. \ - # We have to do it here so the permissions are correctly fixed and pip is able \ - # to reinstall itself in the next build phases in the assemble script if user wants the latest version \ - ${APP_ROOT}/bin/pip install /opt/wheels/pip-* && \ - rm -r /opt/wheels && \ - chown -R 1001:0 ${APP_ROOT} && \ - fix-permissions ${APP_ROOT} -P && \ - rpm-file-permissions - -USER 1001 - -# Set the default CMD to print the usage of the language image. -CMD $STI_SCRIPTS_PATH/usage diff --git a/3.9/Dockerfile.rhel8 b/3.9/Dockerfile.rhel8 deleted file mode 100644 index 56ddac70..00000000 --- a/3.9/Dockerfile.rhel8 +++ /dev/null @@ -1,96 +0,0 @@ -# This image provides a Python 3.9 environment you can use to run your Python -# applications. -FROM ubi8/s2i-base:1 - -EXPOSE 8080 - -ENV PYTHON_VERSION=3.9 \ - PATH=$HOME/.local/bin/:$PATH \ - PYTHONUNBUFFERED=1 \ - PYTHONIOENCODING=UTF-8 \ - LC_ALL=en_US.UTF-8 \ - LANG=en_US.UTF-8 \ - CNB_STACK_ID=com.redhat.stacks.ubi8-python-39 \ - CNB_USER_ID=1001 \ - CNB_GROUP_ID=0 \ - PIP_NO_CACHE_DIR=off - -ENV SUMMARY="Platform for building and running Python $PYTHON_VERSION applications" \ - DESCRIPTION="Python $PYTHON_VERSION available as container is a base platform for \ -building and running various Python $PYTHON_VERSION applications and frameworks. \ -Python is an easy to learn, powerful programming language. It has efficient high-level \ -data structures and a simple but effective approach to object-oriented programming. \ -Python's elegant syntax and dynamic typing, together with its interpreted nature, \ -make it an ideal language for scripting and rapid application development in many areas \ -on most platforms." - -LABEL summary="$SUMMARY" \ - description="$DESCRIPTION" \ - io.k8s.description="$DESCRIPTION" \ - io.k8s.display-name="Python 3.9" \ - io.openshift.expose-services="8080:http" \ - io.openshift.tags="builder,python,python39,python-39,rh-python39" \ - com.redhat.component="python-39-container" \ - name="ubi8/python-39" \ - usage="s2i build https://github.com/sclorg/s2i-python-container.git --context-dir=3.9/test/setup-test-app/ ubi8/python-39 python-sample-app" \ - com.redhat.license_terms="https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI" \ - io.buildpacks.stack.id="com.redhat.stacks.ubi8-python-39" \ - maintainer="SoftwareCollections.org " - -RUN INSTALL_PKGS="python39 python39-devel python39-setuptools python39-pip nss_wrapper-libs \ - httpd httpd-devel mod_ssl mod_auth_gssapi mod_ldap \ - mod_session atlas-devel gcc-gfortran libffi-devel libtool-ltdl \ - enchant krb5-devel" && \ - yum -y module enable python39:3.9 httpd:2.4 && \ - yum -y --setopt=tsflags=nodocs install $INSTALL_PKGS && \ - rpm -V $INSTALL_PKGS && \ - # Remove redhat-logos-httpd (httpd dependency) to keep image size smaller. - rpm -e --nodeps redhat-logos-httpd && \ - yum -y clean all --enablerepo='*' - -# Copy the S2I scripts from the specific language image to $STI_SCRIPTS_PATH. -COPY 3.9/s2i/bin/ $STI_SCRIPTS_PATH - -# Copy extra files to the image. -COPY 3.9/root/ / - -# Python 3.7+ only -# Yes, the directory below is already copied by the previous command. -# The problem here is that the wheels directory is copied as a symlink. -# Only if you specify symlink directly as a source, COPY copies all the -# files from the symlink destination. -COPY 3.9/root/opt/wheels /opt/wheels -# - Create a Python virtual environment for use by any application to avoid -# potential conflicts with Python packages preinstalled in the main Python -# installation. -# - In order to drop the root user, we have to make some directories world -# writable as OpenShift default security model is to run the container -# under random UID. -RUN \ - python3.9 -m venv ${APP_ROOT} && \ - # Python 3.7+ only code, Python <3.7 installs pip from PyPI in the assemble script. \ - # We have to upgrade pip to a newer verison because \ - # pip < 19.3 does not support manylinux2014 wheels. Only manylinux2014 (and later) wheels \ - # support platforms like ppc64le, aarch64 or armv7 \ - # We are newly using wheel from one of the latest stable Fedora releases (from RPM python-pip-wheel) \ - # because it's tested better then whatever version from PyPI and contains useful patches. \ - # We have to do it here (in the macro) so the permissions are correctly fixed and pip is able \ - # to reinstall itself in the next build phases in the assemble script if user wants the latest version \ - ${APP_ROOT}/bin/pip install /opt/wheels/pip-* && \ - rm -r /opt/wheels && \ - chown -R 1001:0 ${APP_ROOT} && \ - fix-permissions ${APP_ROOT} -P && \ - rpm-file-permissions && \ - # The following echo adds the unset command for the variables set below to the \ - # venv activation script. This prevents the virtual environment from being \ - # activated multiple times and also every time the prompt is rendered. \ - echo "unset BASH_ENV PROMPT_COMMAND ENV" >> ${APP_ROOT}/bin/activate -# Ensure the virtualenv is activated in interactive shells -ENV BASH_ENV="${APP_ROOT}/bin/activate" \ - ENV="${APP_ROOT}/bin/activate" \ - PROMPT_COMMAND=". ${APP_ROOT}/bin/activate" - -USER 1001 - -# Set the default CMD to print the usage of the language image. -CMD $STI_SCRIPTS_PATH/usage diff --git a/3.9/README.md b/3.9/README.md index 1167e9a4..7e8e89e9 100644 --- a/3.9/README.md +++ b/3.9/README.md @@ -74,7 +74,7 @@ To use the Python image in a Dockerfile, follow these steps: #### 1. Pull a base builder image to build on ``` -podman pull registry.access.redhat.com/ubi8/python-39 +podman pull registry.access.redhat.com/ubi9/python-39 ``` #### 2. Pull and application code @@ -105,7 +105,7 @@ prepared for a future flawless switch to a newer or different platform. To use the Source-to-Image scripts and build an image using a Dockerfile, create a Dockerfile with this content: ``` -FROM registry.access.redhat.com/ubi8/python-39 +FROM registry.access.redhat.com/ubi9/python-39 # Add application sources to a directory that the assemble script expects them # and set permissions so that the container runs without root access @@ -125,7 +125,7 @@ If you decide not to use the Source-to-Image scripts, you will need to manually Example Dockerfile for a simple Django application: ``` -FROM registry.access.redhat.com/ubi8/python-39 +FROM registry.access.redhat.com/ubi9/python-39 # Add application sources with correct permissions for OpenShift USER 0 diff --git a/specs/multispec.yml b/specs/multispec.yml index a7ff8455..68a2cc18 100644 --- a/specs/multispec.yml +++ b/specs/multispec.yml @@ -190,7 +190,7 @@ specs: base_img_version: "1" module_stream: "python39:3.9" pkg_prefix: "python39" - main_image: "registry.access.redhat.com/ubi8/python-39" + main_image: "registry.access.redhat.com/ubi9/python-39" "3.9-minimal": version: "3.9" @@ -217,11 +217,9 @@ matrix: version: "3.6" - distros: - centos-stream-9-x86_64 - - rhel-8-x86_64 - rhel-9-x86_64 version: "3.9" - distros: - - rhel-8-x86_64 - centos-stream-9-x86_64 version: "3.9-minimal" - distros: