Skip to content
This repository has been archived by the owner on Aug 9, 2021. It is now read-only.
/ ose3-rails Public archive

Dockerfiles for OpenShift 3 Rails deployments

Notifications You must be signed in to change notification settings

puzzle/ose3-rails

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Dockerfiles for OpenShift 3 Rails deployments

The Dockerfiles

dist contains ready-to-build dockerfiles.

  • rails/pure An Apache/Passenger/Rails image
  • rails/nodejs An Apache/Passenger/Rails/nodejs image
  • rails/sphinx An Apache/Passenger/Rails/sphinx image
  • rails/sphinx-transifex An Apache/Passenger/Rails/sphinx/transifex image

Dockerhub

All these images are built on Dockerhub.

Versioning concept

The ruby 2.2 images are organized in two branches, master and stable. master contains release candidates ready for integration testing. The stable branch contains the images used in production environments.

Each Dockerfile is released on it's own DockerHub repository:

There are more docker tags in place so you can pin your image to the versions of the software contained inside. Have a look at DockerHub.

Tags ending in -dev are the builds from the master branch used for integration tests.

Building

Locally

Change to the desired Dockerfiles' containing folder and docker build .

On OpenShift

Sample spec section of your BuildConfig:

source:
  type: "Git"
  git: 
    uri: "<this repos' uri>"
    ref: "master"
  contextDir: "<e.g. dist/rails/pure>" 

Developing

Dockerfiles and build contexts under dist are generated from the source files at src.

Building dist

Use ruby 2.3.1 (although everything > 2 should work), rvm will do so for you automatically.

rvm use 2.3.1
gem install bundler
bundle install
rake build

Source structure

src contains ERB templates to build the Dockerfiles and the necessary files for their build contexts.

src
├── _build
│   └── (The build script)
└── rails (Collection of images)
    ├── _context (Contains files and folders to copy to build context)
    ├── _partials (Contains partials)
    ├── pure (An image)
    │   ├── Dockerfile.erb
    │   └── README.md.erb
    └── nodejs (Another image)
        ├── _context (nodejs specific build context contents)

An example: When building nodejs

  • dist/rails/nodejs/Dockerfile is generated from src/rails/nodejs/Dockerfile.erb The template has access to all partials in nodejs/_partials and all parent folders (rails/_partials in this case). A partial _foo.erb is rendered by doing <%= partial("foo") %>. nodejs/_partials/_foo.erb will take precedence over rails/_partials/_foo.erb.
  • All necessary files for the docker build context (store them in the _context folders) are copied to dist/rails/nodejs/. A file nodejs/foofile will override rails/foofile.

Testing

Check out bin/test.sh for a simple integration test.

Releasing

For now, only Puzzle members may release new versions of the images.

Refer to the internal documentation at puzzle to learn how to test the image against a fow OpenShift projects before releasing it on DockerHub.

Further reading

About

Dockerfiles for OpenShift 3 Rails deployments

Resources

Stars

Watchers

Forks

Packages

No packages published