First get a copy of the getting-started app:

https://github.com/docker/getting-started-app/tree/main

then you need this as Dockerfile:

# Self-contained Ruby builder image.
#
# You can use this image to produce an application image providing the source
# code:
#
# $ docker run -v $(pwd):/tmp/src openshift/centos-ruby-selfcontained
# <your application is being build>
#
# $ docker commit <id> your_application
#
# Then you can start your application using:
#
# $ docker run -p :9292 your_application
#
#
# This image provides a base for running Ruby based applications. It provides
# just base Ruby installation using SCL and Ruby application server.
#
# If you want to use Bundler with C-extensioned gems or MySQL/PostGresql, you
# can use 'centos-ruby-extended' image instead.
#

FROM       centos:6
MAINTAINER Michal Fojtik <mfojtik@redhat.com>

ADD ./etc /root/etc
ADD ./i686 /root/i686
RUN mv /etc/yum.repos.d /etc/yum.repos.d.orig
RUN cp -a /root/etc/yum.repos.d /etc/
RUN cp -f /root/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 /etc/pki/rpm-gpg/
# Pull in important updates and then install ruby193 SCL
#
RUN yum -y groupinstall "Development tools" "Additional development"
RUN yum -y install libstdc++.i686 libstdc++ unixODBC.i686 mysql-libs.i686 mysql-libs libcurl-devel.i686 expat.i686 expat glib2.i686 glib2 freetype.i686 libSM.i686 libXrender.i686 fontconfig.i686 libXext-devel.i686 guacd libguac-client-vnc mysql-server tomcat6 system-config-printer libXext.i686 libXext rxvt mpage unix2dos gtk2-devel gtk2-devel.i686 seamonkey ORBit2-devel mlocate fail2ban libgcj.i686 tcsh
RUN yum -y install unixODBC-devel.i686 glibc-devel.i686 openssl-devel.i686
RUN cd /root/i686
RUN yum -y install /root/i686/w3c*.rpm
RUN yum -y install mysql-devel.i686
RUN yum -y install libcom_err-devel.i686 krb5-devel.i686
RUN yum -y install libidn-devel.i686 zlib-devel.i686
RUN yum -y install fontconfig-devel.i686
RUN yum -y install qt-devel.i686
RUN yum -y install libxml2-devel.i686
RUN yum -y install vim
RUN ln -s /u/cc /
RUN ln -s /u/ccr.16 /
#This is to build rel 16
#RUN . /u/ccr.16/usr/devlop.sh
#RUN /u/ccr.16/script/Getall
#RUN /u/ccr.16/script/linux_build
#RUN yum -y --allowerasing --skip-broken groupinstall "Additional development"
#      yum clean all

# Create 'ruby' account we will use to run Ruby application
#
#RUN mkdir -p /opt/ruby/{gems,run,src,bin} && \
#      groupadd -r ruby -f -g 433 && \
#      useradd -u 431 -r -g ruby -d /opt/ruby -s /sbin/nologin -c "Ruby application" ruby

#ADD ./bin /opt/ruby/bin/
#ADD ./etc /opt/ruby/etc/

# FIXME: The STI require all scripts in /usr/bin path, this layer is here to
#        maintain backward compatibility
#
#RUN cp -f /opt/ruby/bin/prepare /usr/bin/prepare && \
#    cp -f /opt/ruby/bin/run /usr/bin/run

#RUN chown -R ruby:ruby /opt/ruby

# Set the 'root' directory where this build will search for Gemfile and
# config.ru.
#
# This can be overridden inside another Dockerfile that uses this image as a base
# image or in STI via the '-e "APP_ROOT=subdir"' option.
#
# Use this in case when your application is contained in a subfolder of your
# GIT repository. The default value is the root folder.
#
#ENV APP_ROOT .
#ENV HOME     /opt/ruby
#ENV PATH     $HOME/bin:$PATH

# The initial 'start' command will trigger an application build when it runs in
# 'self-contained' builder context. After application is built, then this
# command is replaced in final application image by the 'run' command.
#
#RUN chown -R ruby:ruby /opt/ruby/bin

#USER ruby
#ENTRYPOINT ["/opt/ruby/bin/start"]
ENTRYPOINT "/u/ccr.16/script/GetAll"
#ENTRYPOINT "/u/ccr.16/script/linux_build"
#ENTRYPOINT "/u/ccr.16/script/setupenv.sh"

Then in the directory where "Dockerfile" is located,

#docker build -t getting-started .

Modify Dockerfile last line and uncomment the linux_build:

#ENTRYPOINT "/u/ccr.16/script/GetAll"
ENTRYPOINT "/u/ccr.16/script/linux_build

Then:

#docker build -t linux-build .

Modify Dockerfile last line again, this time comment out all the ENTRYPOINT:

#ENTRYPOINT ["/opt/ruby/bin/start"]
#ENTRYPOINT "/u/ccr.16/script/GetAll"
#ENTRYPOINT "/u/ccr.16/script/linux_build"
#ENTRYPOINT "/u/ccr.16/script/setupenv.sh"

Then

#docker build -t shell .

There are now 3 images in our repository, all based on CentOS 6

getting-started: gets all the source. linux-build: compiles the linux and x11 version. shell: can be used for an interactive shell.

First 2 can be added to cron for nightly compile:

50 0 * * * docker run -v /u:/u -v /usr/bin/realsccs:/usr/bin/realsccs getting-started
55 0 * * * docker run -v /u:/u -v /usr/bin/realsccs:/usr/bin/realsccs linux-build

To get a shell we create a simple shell script so we don't need to remember everything

/usr/local/bin/rel16env

#!/bin/bash docker run -v /u:/u -v /usr/bin/realsccs:/usr/bin/realsccs -v /tmp:/tmp -it shell bash -rcfile /u/cc/script/setupenv.sh  so to get a rel 16 compile environment interactive shell, you just need to run

$rel16env

create_docker_compile_environment (last edited 2024-03-21 00:22:54 by JonCo)