Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
titleCentos7
FROM centos:centos7.7.1908

ARG USER = almamgr
ARG GROUP = almamgr
ARG USER_ID
ARG GROUP_ID

#General packages
RUN yum -y install vim redhat-lsb-core sudo dbus-x11

#Install Git and Git LFS
RUN yum -y install epel-release
RUN yum -y install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
RUN yum -y install git
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.rpm.sh | bash
RUN yum -y install git-lfs

#Install Java 11
RUN yum -y install java-11-openjdk-devel

#Prepare for Java
RUN mkdir /usr/java
RUN ln -s /usr/lib/jvm/java-openjdk /usr/java/default

#Install ACS required packages
RUN yum -y install ksh gcc gcc-c++ libX11-devel libffi-devel perl readline-devel bzip2 bzip2-devel openssl-devel openldap-devel libxml2-devel freetype-devel libxslt-devel sqlite-devel expat-devel bison flex autoconf unzip dos2unix

#ARCHIVE
RUN yum -y install libtool libdb-devel

#ICD
RUN yum -y install cmake blas-devel cfitsio-devel wcslib-devel lapack-devel

#CONTROL
RUN yum -y install binutils-devel libmemcached-devel
#CORRCommon
RUN yum -y install kernel kernel-devel procmail

#TELCAL
RUN yum -y install motif-devel texlive

#RTI DDS
RUN cd / && curl http://acsuser:wfhpp00fs@webdav.sco.alma.cl/restricted/propietary/RTI-RHEL6-x86_64.tar.bz2 | tar -xj

#Debugging Tools
RUN yum -y install gdb net-tools

#User configuration
RUN groupadd -r -g ${GROUP_ID} almamgr${GROUP}
RUN useradd -r -m -u ${USER_ID} -g almamgr almamgr${GROUP} ${USER}
RUN groupadd sudo
RUN usermod -aG sudo almamgr${USER}
RUN echo testnew2me |passwd almamgr${USER} --stdin
RUN echo "%sudo ALL=(ALL)       ALL" >> /etc/sudoers
RUN echo "%sudo ALL=(ALL)       NOPASSWD: ALL" >> /etc/sudoers
USER almamgr${USER}


Docker Compose

Code Block
titledocker-compose.yml
version: "3.4"

x-args: &args
   USER_ID: ${USER_ID}
   GROUP_ID: ${GROUP_ID}

x-env: &env
   - DISPLAY=${DISPLAY}

x-volumes: &volumes
   - ${REPO_DIR}:/Repos
   - ${ALMA_DIR}/${CONTAINER_OS}:/alma:z
   - .${HOME_DIR}/${CONTAINER_OS}:/working:home/workingalmamgr:z
   - /tmp/.X11-unix:/tmp/.X11-unix:rwrwz

x-acs-images: &common
   build:
      dockerfile: Dockerfile
      context: ./${CONTAINER_OS}
      args:
         *args
   security_opt:
      - seccomp:unconfined
   image: acs-${CONTAINER_OS}
   environment:
      *env
   volumes:
      *volumes
   working_dir: /workinghome/almamgr
   networks:
      - acs-docker

services:
   centos6:
      <<: *common
   centos7:
      <<: *common
   centos8:
      <<: *common


networks:
   acs-docker:
      driver: bridge

Docker Compose .env

  • USER_ID: Id of local user executing docker instance
  • GROUP_ID: Group id from local user executing docker instance
  • ALMA_DIR: Path that has all the directories that will be mounted as /alma in the container, for instance in my examples is '/external/docker/'
    • Inside this directory there's a set of directories for each OS, each will be mounted as /alma for the different images/containers. For instance '/external/docker/centos7' will be mounted as /alma in centos7 containers
  • REPO_DIR: Path to the Git Repository. In my case inside this path (/external/Repos) I have 'almasw' and 'worktrees', which allow to have several worktrees for building without affecting other parts of the system
  • CONTAINER_OS: Here I define the default OS to be used. This can be overridden on command line if other OS is going to be used, but the default one should be defined here

...

Code Block
title.env example
USER_ID=1000
GROUP_ID=1000
ALMA_DIR=/external/docker/alma
HOME_DIR=/external/docker/home
REPO_DIR=/external/Repos
CONTAINER_OS=centos7

...

Code Block
titleMakefile
images:=$(wildcard fedora*) $(wildcard centos*)
build: $(images)
.PHONY: $(images)
$(images):
        @CONTAINER_OS=$@ docker-compose build $@
$(addprefix up-,$(images)):
        @CONTAINER_OS=$(subst up-,,$@) docker-compose up $(subst up-,,$@)

$(addprefix down-,$(images)):
        @CONTAINER_OS=$(subst down-,,$@) docker-compose down

...