Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update Dockerfile #123

Merged
merged 6 commits into from
Mar 6, 2024
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 17 additions & 43 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,48 +1,22 @@
# Using the ubuntu:20.04 base image for compatibility with the ICESat-2 SlideRule software
# Some code to add conda from https://github.com/conda-forge/miniforge-images/blob/master/ubuntu/Dockerfile
# This file builds the docker image for the ICESat-2 tracks project. Includes the ICESat-2 SlideRule tool, conda, and the python3.11 environment for the project with dependencies provided in the environment_small.yml file.
FROM ubuntu:20.04
ARG DEBIAN_FRONTEND=noninteractive
ARG MINIFORGE_NAME=Miniforge3
ARG MINIFORGE_VERSION=23.3.1-0
ARG TARGETPLATFORM
# Use the official Python 3.11 image from the Docker Hub
FROM python:3.11

ENV CONDA_DIR=/opt/conda
ENV LANG=C.UTF-8 LC_ALL=C.UTF-8
ENV PATH=${CONDA_DIR}/bin:${PATH}
ENV ENVNAME=2021-icesat2-tracks
RUN apt-get update && \
apt-get install -y git curl wget
# Update the system and install the packages
RUN apt-get update && apt-get install -y \
openmpi-bin \
openmpi-doc \
libopenmpi-dev

# Install sliderule dependencies
RUN apt-get install -y build-essential libreadline-dev liblua5.3-dev zlib1g-dev cmake
RUN git clone https://github.com/ICESat2-SlideRule/sliderule.git
WORKDIR /sliderule/
RUN make config && \
make && \
make install
# Set the working directory to /app
WORKDIR /app

# Install conda
RUN apt-get update > /dev/null && \
apt-get install --no-install-recommends --yes \
bzip2 ca-certificates \
tini \
> /dev/null && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
wget --no-hsts --quiet https://github.com/conda-forge/miniforge/releases/download/${MINIFORGE_VERSION}/${MINIFORGE_NAME}-${MINIFORGE_VERSION}-Linux-$(uname -m).sh -O /tmp/miniforge.sh && \
/bin/bash /tmp/miniforge.sh -b -p ${CONDA_DIR} && \
rm /tmp/miniforge.sh && \
conda clean --tarballs --index-cache --packages --yes && \
find ${CONDA_DIR} -follow -type f -name '*.a' -delete && \
find ${CONDA_DIR} -follow -type f -name '*.pyc' -delete && \
conda clean --force-pkgs-dirs --all --yes && \
echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate base" >> /etc/skel/.bashrc && \
echo ". ${CONDA_DIR}/etc/profile.d/conda.sh && conda activate base" >> ~/.bashrc
# Copy the current directory contents into the container at /app
COPY . /app

# Install conda environment
COPY environment_small.yml /tmp/environment.yml
RUN mamba env create -f /tmp/environment.yml
# Create the output directory
RUN mkdir -p /app/output

ENTRYPOINT ["tini", "--"]
CMD ["/bin/bash"]
# Install any needed packages specified in pyproject.toml
RUN pip install .

CMD ["/bin/bash"]
Loading