From 91ff683a9935fd0c4809958034606f70f8593277 Mon Sep 17 00:00:00 2001 From: "andrea.giannetti" <andrea.giannetti@inaf.it> Date: Thu, 13 Jun 2024 10:20:57 -0600 Subject: [PATCH] Added Docker files --- .dockerignore | 10 +++++++++ Dockerfile | 33 +++++++++++++++++++++++++++++ apptainer.def | 7 +++++++ create_apptainer_image_file.sh | 3 +++ docker-compose.yaml | 36 ++++++++++++++++++++++++++++++++ documentation/radmc3d_install.sh | 28 +++++++++++++++++++++++++ 6 files changed, 117 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 apptainer.def create mode 100644 create_apptainer_image_file.sh create mode 100644 docker-compose.yaml create mode 100644 documentation/radmc3d_install.sh diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..7f80558 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,10 @@ +/etl/credentials/db_credentials*.yml +/etl/stg/archive/* +/etl/prs/fits/cubes/* +/etl/prs/fits/moments/* +/etl/prs/fits/ratios/* +/etl/prs/fits/grids/* +/etl/mdl/radmc_files/* +/etl/mdl/scratches/* +/etl/prs/output/* +/etl/*.sif \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b0c98fa --- /dev/null +++ b/Dockerfile @@ -0,0 +1,33 @@ +FROM python:3.9-slim + + +# STEP 1) Setting up environment +# apt packages +RUN apt-get update && \ + apt-get --yes upgrade && \ + apt-get install --yes libgomp1 && \ + apt-get install --yes postgresql-client && \ + apt-get install --yes --reinstall build-essential && \ + apt-get -y install curl vim less nano git && \ + apt-get -y install zip unzip && \ + apt-get clean + +WORKDIR /usr/src/etl +RUN python -m pip install --upgrade pip +COPY etl/requirements.txt . +RUN pip install -r requirements.txt + +RUN mkdir /sak_user +# RUN /usr/sbin/usermod -d /sak_user root +RUN HOME=/sak_user +COPY documentation/radmc3d_install.sh . +RUN chmod 755 radmc3d_install.sh +RUN HOME=/sak_user;./radmc3d_install.sh +ENV PATH="/sak_user/bin:${PATH}" +ENV PYTHONPATH="/sak_user/bin/python:${PYTHONPATH}" +RUN chmod 755 /sak_user/bin/radmc3d + +# STEP 2) Bundling app +COPY etl . + +CMD python main.py \ No newline at end of file diff --git a/apptainer.def b/apptainer.def new file mode 100644 index 0000000..597e8c3 --- /dev/null +++ b/apptainer.def @@ -0,0 +1,7 @@ +Bootstrap: docker +From: postgres:14.1-alpine + +%environment +export POSTGRES_DB=$DB_NAME +export POSTGRES_USER=$DB_USER +export POSTGRES_PASSWORD=$DB_PASS diff --git a/create_apptainer_image_file.sh b/create_apptainer_image_file.sh new file mode 100644 index 0000000..724dcb1 --- /dev/null +++ b/create_apptainer_image_file.sh @@ -0,0 +1,3 @@ +rm swiss_army_knife_latest.sif +singularity pull --disable-cache docker://git.ia2.inaf.it:5050/andrea.giannetti/swiss_army_knife + diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..e33c742 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,36 @@ +version: '3.8' +services: + db: + image: postgres:14.1-alpine + container_name: db_container_sak + restart: always + environment: + - POSTGRES_DB=$DB_NAME + - POSTGRES_USER=$DB_USER + - POSTGRES_PASSWORD=$DB_PASS + ports: + - '31000:5432' + volumes: + - db:/var/lib/postgresql/data + networks: + - sak_network + + etl: + build: + dockerfile: Dockerfile + container_name: 'etl_sak' + image: 'sak_etl' + depends_on: + - db + stdin_open: true + tty: true + networks: + - sak_network + volumes: + - ./etl:/usr/src/etl +volumes: + db: + driver: local +networks: + sak_network: + name: 'sak_app_network' \ No newline at end of file diff --git a/documentation/radmc3d_install.sh b/documentation/radmc3d_install.sh new file mode 100644 index 0000000..f119cb7 --- /dev/null +++ b/documentation/radmc3d_install.sh @@ -0,0 +1,28 @@ +#!/bin/bash +# Set PYCHARM_HOME, INSTALL_DEPENDENCIES environment variable +PYCHARM_HOME=${PYCHARM_HOME:=$HOME} +INSTALL_DEPENDENCIES="${INSTALL_DEPENDENCIES:=true}" +echo $PYCHARM_HOME +cd $PYCHARM_HOME +export RADMC_HOME=$PYCHARM_HOME/radmc3d-2.0 +if [[ ! -d "$RADMC_HOME" ]] +then + echo RADMC not found, cloning into "$(pwd)" + git clone https://github.com/dullemond/radmc3d-2.0.git +fi + +if $INSTALL_DEPENDENCIES +then + apt-get install -y gfortran +fi + +cd $RADMC_HOME/src +make +echo "y\n y\n"| make install + +# Add this to the .bashrc configuration file (or equivalent) +export PATH=$HOME/bin:$PATH +export PYTHONPATH=$HOME/bin/python:$PYTHONPATH + +cd $RADMC_HOME/python/radmc3dPy +python setup.py install -- GitLab