Public | Automated Build

Last pushed: a year ago
Short Description
Automated build for
Full Description

Perl S2I

This repository contains the sources for S2I builder image for perl 5.24 as well as some sample applications. This is a port to Fedora of software collections Perl located here, that is now using base-runtime and Perl module. Please note that this solution uses httpd 2.4 to display results.



First you need to build the builder image. After you have the builder image, you can use it for a S2I build. You can build and run the sample app like this:

$ docker build --tag=koscicz/perl .
$ s2i build --context-dir=test/sample-test-app/ koscicz/perl perl-sample-app
$ docker run -p 8080:8080 perl-sample-app

This will build and run you application on You can also build the builder image by running make. This will also tag your image as koscicz/perl.


You can use the openshift-template.yml in this repository to run your application in Openshift. You can either use web interface, in which case you'll just have to fill out a form, requiring a source repository for your app and name of this app. In case you want to use cli, you can do it like this, after you login:

$ oc new-project perl-test
$ oc new-app -p APP_NAME="perl-example" -p SOURCE_REPOSITORY=""

These commands will build the sample application on your Openshift platform.


This repository contains a test folder with some tests to ensure proper functionality. You can run test by using Makefile. You have two options:

  • make all This will build, tag and test the image
  • make test This will run the test on the image, that is defined in the Makefile. By default it is koscicz/perl
    Or you can execute the test script directly, as described below in Repository organization

Repository organization

  • Dockerfile

    Fedora based Dockerfile.

  • s2i/bin/

    This folder contains scripts that are run by S2I:

    • assemble

      Used to install the sources into a location where the application
      will be run and prepare the application for deployment (eg. installing
      modules, etc.).
      In order to install application dependencies, the application must contain a
      cpanfile file, in which the user specifies the modules and their versions.
      An example of a cpanfile is available within our test application.

      All files with .cgi and .pl extension are handled by mod_perl.
      If exactly one file with .psgi extension exists in the top-level
      directory, the mod_perl will be autoconfigured to execute the PSGI
      application for any request URI path with Plack's mod_perl adaptor.

    • run

      This script is responsible for running the application, using the
      Apache web server.

    • usage*

      This script prints the usage of this image.

  • contrib/

    This folder contains a file with commonly used modules.

  • test/

    This folder contains some sample applications you can use to test you image.

    • sample-test-app/

      A simple Perl application used for testing purposes by the S2I test framework.

    • run

      This is a script that runs a test suite on the builder image, to ensure it has all the necessary functionality.
      Run it by ./run IMAGE, where IMAGE is your builder image.

Environment variables

To set environment variables, you can place them as a key value pair into a .sti/environment
file inside your source code repository.


    Allow the installation of all specified cpan packages and the running of their tests. The default value is false.


    This variable specifies a mirror URL which will used by cpanminus to install dependencies.
    By default the URL is not specified.


    Set this to "true" to enable automatic reloading of modified Perl modules.


    The StartServers
    directive sets the number of child server processes created on startup. Default is 8.


    Number of simultaneous requests that will be handled by Apache. The default
    is 256, but it will be automatically lowered if memory is limited.


    Override PSGI application detection.

    If the PSGI_FILE variable is set to empty value, no PSGI application will
    be detected and mod_perl not be reconfigured.

    If the PSGI_FILE variable is set and non-empty, it will define path to
    the PSGI application file. No detection will be used.

    If the PSGI_FILE variable does not exist, autodetection will be used:
    If exactly one ./*.psgi file exists, mod_perl will be configured to
    execute that file.


    This variable overrides location URI path that is handled path the PSGI
    application. Default value is "/".

Docker Pull Command
Source Repository