From 6c4c356f9d2024ae5f8e96059945b44eb23a79b1 Mon Sep 17 00:00:00 2001 From: Alan Hodgson Date: Tue, 16 Jan 2024 11:21:06 -0800 Subject: [PATCH] Add versioned Python images for Python versions 3.8-3.12 --- .github/workflows/main.yml | 6 ++++++ .gitignore | 7 +------ CHANGELOG.md | 1 + Makefile | 17 +++++++++++------ README.md | 10 +++++++++- image/install_image.sh | 6 +++++- 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index ffa4a5bf..d5c05637 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -29,6 +29,12 @@ jobs: - ruby31 # EOL: 2025-03-31 - ruby30 # EOL: 2024-03-31 # https://www.ruby-lang.org/en/downloads/branches/ + - python312 # EOL: 2028-10-02 + - python311 # EOL: 2027-10-24 + - python310 # EOL: 2026-10-04 + - python39 # EOL: 2025-10-05 + - python38 # EOL: 2024-10-14 + # https://devguide.python.org/versions/ steps: - name: Checkout code uses: actions/checkout@v4 diff --git a/.gitignore b/.gitignore index 6383fc6c..faf02032 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,3 @@ .DS_Store .vagrant -customizable_image -ruby*_image -jruby*_image -nodejs_image -full_image -base_image +*_image diff --git a/CHANGELOG.md b/CHANGELOG.md index af9829ec..39d4935f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ * Added a Ruby 3.3.0 image * Upgraded to JRuby 9.3.13.0 (from 9.3.11.0) * Upgraded to JRuby 9.4.5.0 (from 9.4.3.0) + * Added versioned Python images for Python versions 3.8 to 3.12 ## 2.6.0 (release date: 2023-11-20) * Upgraded to Phusion Passenger 6.0.19 (from 6.0.18). diff --git a/Makefile b/Makefile index 12712dd3..afc16423 100644 --- a/Makefile +++ b/Makefile @@ -35,18 +35,22 @@ endif FORCE: SPECIAL_IMAGES := customizable full -SINGLE_VERSION_IMAGES := jruby93 jruby94 nodejs ruby30 ruby31 ruby32 ruby33 +CRUBY_IMAGES := ruby30 ruby31 ruby32 ruby33 +PYTHON_IMAGES := python38 python39 python310 python311 python312 +MISC_IMAGES := jruby93 jruby94 nodejs -ALL_IMAGES := $(SPECIAL_IMAGES) $(SINGLE_VERSION_IMAGES) +ALL_IMAGES := $(SPECIAL_IMAGES) $(MISC_IMAGES) $(CRUBY_IMAGES) $(PYTHON_IMAGES) all: build_all -# waits are to ensure that we only compile each version of ruby once per arch even if running parallel +# waits are to ensure that we only compile each version of ruby once per arch even if running in parallel build_all: \ build_customizable \ .WAIT \ - $(foreach image, $(SINGLE_VERSION_IMAGES), build_${image}) \ + $(foreach image, $(CRUBY_IMAGES), build_${image}) \ .WAIT \ + $(foreach image, $(MISC_IMAGES), build_${image}) \ + $(foreach image, $(PYTHON_IMAGES), build_${image}) \ build_full build_base: @@ -69,8 +73,9 @@ build_%: build_base echo "${*}=1" >> ${*}_image/buildconfig; \ fi @if [ "${*}" == "full" ]; then \ - for i in ${SINGLE_VERSION_IMAGES}; do echo "$${i}=1" >> ${*}_image/buildconfig; done; \ - echo python=1 >> ${*}_image/buildconfig; \ + for i in ${CRUBY_IMAGES}; do echo "$${i}=1" >> ${*}_image/buildconfig; done; \ + for i in ${MISC_IMAGES}; do echo "$${i}=1" >> ${*}_image/buildconfig; done; \ + echo python310=1 >> ${*}_image/buildconfig; \ echo redis=1 >> ${*}_image/buildconfig; \ echo memcached=1 >> ${*}_image/buildconfig; \ fi diff --git a/README.md b/README.md index 9c73322a..1c9b4f4d 100644 --- a/README.md +++ b/README.md @@ -136,6 +136,14 @@ Passenger-docker consists of several images, each one tailor made for a specific * `phusion/passenger-jruby93` - JRuby 9.3. * `phusion/passenger-jruby94` - JRuby 9.4. +Python images + + * `phusion/passenger-python38` - Python 3.8 + * `phusion/passenger-python39` - Python 3.9 + * `phusion/passenger-python310` - Python 3.10 + * `phusion/passenger-python311` - Python 3.11 + * `phusion/passenger-python312` - Python 3.12 + **Node.js and Meteor images** * `phusion/passenger-nodejs` - Node.js 18. @@ -511,7 +519,7 @@ The following example shows how you can add a startup script. This script simply passenger-docker images contain an Ubuntu 20.04 operating system. You may want to update this OS from time to time, for example to pull in the latest security updates. OpenSSL is a notorious example. Vulnerabilities are discovered in OpenSSL on a regular basis, so you should keep OpenSSL up-to-date as much as you can. -While we release passenger-docker images with the latest OS updates from time to time, you do not have to rely on us. You can update the OS inside passenger-docker images yourself, and it is recommend that you do this instead of waiting for us. +While we release passenger-docker images with the latest OS updates from time to time, you do not have to rely on us. You can update the OS inside passenger-docker images yourself, and it is recommend that you do this instead of waiting for us. This is also especially important to upgrade any installed Python or Node packages to the latest minor version. To upgrade the OS in the image, run this in your Dockerfile: diff --git a/image/install_image.sh b/image/install_image.sh index 160c112a..db02592a 100755 --- a/image/install_image.sh +++ b/image/install_image.sh @@ -11,10 +11,14 @@ if [[ "$ruby32" = 1 ]]; then run /pd_build/ruby-3.2.*.sh; fi if [[ "$ruby33" = 1 ]]; then run /pd_build/ruby-3.3.*.sh; fi if [[ "$jruby93" = 1 ]]; then run /pd_build/jruby-9.3.*.sh; fi if [[ "$jruby94" = 1 ]]; then run /pd_build/jruby-9.4.*.sh; fi -if [[ "$python" = 1 ]]; then run /pd_build/python.sh; fi if [[ "$nodejs" = 1 ]]; then run /pd_build/nodejs.sh; fi if [[ "$redis" = 1 ]]; then run /pd_build/redis.sh; fi if [[ "$memcached" = 1 ]]; then run /pd_build/memcached.sh; fi +if [[ "$python38" = 1 ]]; then run /pd_build/python.sh 3.8; fi +if [[ "$python39" = 1 ]]; then run /pd_build/python.sh 3.9; fi +if [[ "$python310" = 1 ]]; then run /pd_build/python.sh 3.10; fi +if [[ "$python311" = 1 ]]; then run /pd_build/python.sh 3.11; fi +if [[ "$python312" = 1 ]]; then run /pd_build/python.sh 3.12; fi # Must be installed after Ruby, so that we don't end up with two Ruby versions. run /pd_build/nginx-passenger.sh