Skip to content

Commit

Permalink
initial update of Dockerfile
Browse files Browse the repository at this point in the history
  • Loading branch information
moustakas committed Dec 10, 2024
1 parent 2bb9b8d commit 3037042
Show file tree
Hide file tree
Showing 3 changed files with 42 additions and 35 deletions.
17 changes: 10 additions & 7 deletions doc/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,16 @@ Welcome to the Documentation for FastSpecFit
Overview
--------

``FastSpecFit`` is a stellar continuum and emission-line modeling code for `DESI
<https://desi.lbl.gov>`_ which is optimized for speed and simplicity; it uses
physically motivated stellar population synthesis and emission-line templates to
jointly model the three-camera optical spectrophotometry from DESI and the
ultraviolet through infrared broadband photometry (``fastspec``). Alternatively,
it can be used to model just the broadband photometry (``fastphot``), although
in either case DESI redshifts are required.
``FastSpecFit`` is a stellar continuum and emission-line modeling code which is
optimized for speed and simplicity; it uses physically motivated stellar
population synthesis and emission-line templates to jointly model UV/optical
spectrophotometry and ultraviolet through infrared broadband photometry
(``fastspec``). Alternatively, it can be used to model just the broadband
photometry (``fastphot``).

``FastSpecFit`` currently only supports `DESI <https://desi.lbl.gov>`_
spectrophotometric data, although contributions to develop the software for
other instruments and surveys are more than welcome.

Contents
--------
Expand Down
43 changes: 22 additions & 21 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
FROM ubuntu:22.04
FROM ubuntu:24.04.1

RUN mkdir -p /src
WORKDIR /src

RUN apt-get -y clean && apt -y update && apt install -y apt-utils && apt -y upgrade && echo 2
RUN apt-get -y clean && apt -y update && apt install -y apt-utils && apt -y upgrade && echo 1

RUN DEBIAN_FRONTEND=noninteractive \
apt install -y --no-install-recommends \
Expand All @@ -19,7 +19,7 @@ RUN DEBIAN_FRONTEND=noninteractive \
libcfitsio-bin \
# libhdf5 needed by h5py
libhdf5-dev \
# mpich \
# needed by mpich \
python3-dev \
python3-pip \
# python3-mpi4py \
Expand Down Expand Up @@ -56,6 +56,7 @@ RUN for x in \
healpy \
fitsio \
numba \
intel-cmplr-lib-rt \
mpi4py \
seaborn \
matplotlib \
Expand All @@ -64,21 +65,21 @@ RUN for x in \
h5py \
; do pip3 install $x; done \
&& rm -Rf /root/.cache/pip \
&& echo 2
&& echo 1

ENV DESIUTIL_VERSION 3.2.6
ENV DESIMODEL_VERSION 0.18.0
ENV DESITARGET_VERSION 2.6.0
ENV DESISPEC_VERSION 0.57.0
ENV SPECLITE_VERSION v0.16
ENV FASTSPECFIT_VERSION 2.1.1
ENV DESIUTIL_VERSION 3.4.3
ENV DESIMODEL_VERSION 0.19.2
ENV DESITARGET_VERSION 2.8.0
ENV DESISPEC_VERSION 0.68.1
ENV SPECLITE_VERSION v0.20
ENV FASTSPECFIT_VERSION main

RUN pip3 install git+https://github.com/desihub/desiutil.git@${DESIUTIL_VERSION}#egg=desiutil
RUN pip3 install git+https://github.com/desihub/desimodel.git@${DESIMODEL_VERSION}#egg=desimodel
RUN pip3 install git+https://github.com/desihub/desitarget.git@${DESITARGET_VERSION}#egg=desitarget
RUN pip3 install git+https://github.com/desihub/desispec.git@${DESISPEC_VERSION}#egg=desispec
RUN pip3 install git+https://github.com/desihub/speclite.git@${SPECLITE_VERSION}#egg=speclite
RUN pip3 install git+https://github.com/desihub/fastspecfit.git@${FASTSPECFIT_VERSION}#egg=fastspecfit && echo 1.1
RUN pip3 install git+https://github.com/desihub/fastspecfit.git@${FASTSPECFIT_VERSION}#egg=fastspecfit && echo 1

ENV PYTHONPATH /src/fastspecfit/py
ENV PATH /src/fastspecfit/bin:/opt/conda/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Expand All @@ -96,15 +97,15 @@ RUN echo "export PS1='[container] \\u@\\h:\\w$ '" >> $HOME/.bashrc \
&& python -c "import astropy" \
&& python -c "import matplotlib.font_manager as fm; f = fm.FontManager()" \
&& ipython -c "print('hello')" \
# Download astropy site locations and USNO sky model
&& python -c "from astropy.coordinates import EarthLocation; EarthLocation._get_site_registry(force_download=True)" \
&& python -c "from astropy.coordinates import EarthLocation, SkyCoord, AltAz; from astropy.time import Time; print(EarthLocation.of_site('ctio')); print(SkyCoord(180.,-45.,unit='deg').transform_to(AltAz(obstime=Time(56806.0, format='mjd'), location=EarthLocation.of_site('ctio'))))" \
# Download astropy IERS leap-second list
&& python -c "from astropy.time import Time; Time.now()" \
# Make astropy cache files readable!?!!
&& chmod -R a+rwX $HOME/.astropy \
# Make ipython config files readable!?!!
&& chmod -R a+rwX $HOME/.ipython \
&& echo 2
## Download astropy site locations and USNO sky model
#&& python -c "from astropy.coordinates import EarthLocation; EarthLocation._get_site_registry(force_download=True)" \
#&& python -c "from astropy.coordinates import EarthLocation, SkyCoord, AltAz; from astropy.time import Time; print(EarthLocation.of_site('ctio')); print(SkyCoord(180.,-45.,unit='deg').transform_to(AltAz(obstime=Time(56806.0, format='mjd'), location=EarthLocation.of_site('ctio'))))" \
## Download astropy IERS leap-second list
#&& python -c "from astropy.time import Time; Time.now()" \
## Make astropy cache files readable!?!!
#&& chmod -R a+rwX $HOME/.astropy \
## Make ipython config files readable!?!!
#&& chmod -R a+rwX $HOME/.ipython \
&& echo 1

LABEL Maintainer="John Moustakas [email protected]"
17 changes: 10 additions & 7 deletions docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,18 +3,21 @@ Build a Docker container for fastspecfit.

Build a cross-platform docker container as documented [here](https://www.docker.com/blog/faster-multi-platform-builds-dockerfile-cross-compilation-guide), [here](https://blog.jaimyn.dev/how-to-build-multi-architecture-docker-images-on-an-m1-mac/), and [here](https://docs.nersc.gov/development/shifter/how-to-use/).

First (but just once), create the builder instance:
The very first time, create a builder instance with
```
docker buildx create --name mybuilder --use
docker buildx create --name FastSpecFit-build --node FastSpecFit --use
```
and then subsequently simply load that instance with
```
docker buildx use FastSpecFit-build
```

Then, subsequently, to create a new (or the latest) version or tag:
Then, subsequently, to create a new (or the latest) version or tag, do:
```
export DOCKER_BUILDKIT=0
export COMPOSE_DOCKER_CLI_BUILD=0
docker buildx use mybuilder
docker buildx build --platform linux/amd64,linux/arm64/v8 --push -t desihub/fastspecfit:2.1.1 .
docker buildx build --platform linux/amd64,linux/arm64/v8 --push -t desihub/fastspecfit:3.1.2 .
docker buildx build --platform linux/amd64,linux/arm64/v8 --push -t desihub/fastspecfit:latest .
```

Expand All @@ -25,8 +28,8 @@ docker run -it desihub/fastspecfit:latest
```
or
```
docker pull desihub/fastspecfit:2.1.1
docker run -it desihub/fastspecfit:2.1.1
docker pull desihub/fastspecfit:3.1.2
docker run -it desihub/fastspecfit:3.1.2
```

Or at NERSC:
Expand Down

0 comments on commit 3037042

Please sign in to comment.