You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »

Configuration

Docker Image

Centos7
FROM centos:centos7

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

#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

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

Docker Compose

docker-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
   - /tmp/.X11-unix:/tmp/.X11-unix:rw
   - ${ALMA_DIR}/${CONTAINER_OS}:/alma
   - ./${CONTAINER_OS}/working:/working:z

x-acs-images: &common
   build:
      dockerfile: Dockerfile
      context: ./${CONTAINER_OS}
      args:
         *args
   image: acs-${CONTAINER_OS}
   environment:
      *env
   volumes:
      *volumes
   working_dir: /working

services:
   fedora26:
      <<: *common
   fedora27:
      <<: *common
   fedora28:
      <<: *common
   fedora29:
      <<: *common
   fedora30:
      <<: *common
   fedora31:
      <<: *common
   centos6:
      <<: *common
   centos7:
      <<: *common
   centos8:
      <<: *common

Docker Compose .env

.env example
USER_ID=1000
GROUP_ID=1000
ALMA_DIR=/external/docker
REPO_DIR=/external/Repos
CONTAINER_OS=centos7
  • 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.
  • No labels