Dockerfile 5.2 KB
# https://pythonspeed.com/articles/base-image-python-docker-images
FROM ubuntu:20.04
# Which glibc version ?
# ./SHELL
# $ ldd --version
# => ldd (Ubuntu GLIBC 2.31-0ubuntu9.7) 2.31

ARG uid

RUN apt-get update && apt-get install -y \
    default-mysql-client \
	libmysqlclient-dev \
    nano vim \
    git

# Python3.8 & pip
RUN apt-get install -y python3.8
RUN apt-get install -y python3-pip

# For guitastro

# DEV only
# for dot => PNG diagrams generation with pyreverse (pylint)
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
RUN apt-get install -y graphviz graphviz-dev

# Guitastro
RUN apt-get install -y \
	# - ASTROMETRY.NET (in order to process images locally, without having to send (big) images to astrometry.net)
	astrometry.net astrometry-data-tycho2 \
	#astrometry-data-2mass \
	# - PIL
	python3-tk \
	python3-pil python3-pil.imagetk

# - INDI => for Guitastro
# https://indilib.org/get-indi/download-ubuntu.html
# For apt-add-repository :
RUN apt-get install -y software-properties-common
# Add repository
RUN apt-add-repository ppa:mutlaqja/ppa
# Add public key for this repo
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 487CEC2B3F33A288
#RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 487CEC2B3F33A288
#RUN apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 487CEC2B3F33A288
#RUN apt-key adv --keyserver http://ppa.launchpad.net/mutlaqja/ppa/ubuntu/dists/jammy --recv-keys 487CEC2B3F33A288
#RUN apt-key adv --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 487CEC2B3F33A288
#10 1.751 E: The repository 'http://ppa.launchpad.net/mutlaqja/ppa/ubuntu jammy InRelease' is not signed.
RUN apt-get update 
RUN apt-get install -y indi-full
RUN apt-get install -y gsc
RUN apt-get install -y kstars-bleeding
RUN apt-get install -y libindi1
RUN apt-get install -y indi-bin
RUN apt-get install -y swig
RUN apt-get install -y libz3-dev
RUN apt-get install -y libcfitsio-dev
RUN apt-get install -y libnova-dev
RUN apt-get install -y libindi-dev
# Obligatoire ?
#RUN pip install --user --install-option="--prefix=" pyindi-client

# - ASTAP (Astrometry) => for Guitastro
# Download .deb file from https://www.hnsky.org/astap.htm
RUN apt-get install -y wget 
RUN wget https://www.hnsky.org/astap_amd64.deb
RUN apt-get install -y ./astap_amd64.deb
RUN rm ./astap_amd64.deb

# - PYLON (Cameras BASLER) => for Guitastro
# https://www.baslerweb.com/en/products/software/basler-pylon-camera-software-suite/
# (you will have to fill a form to be able to download)
# pylon_6.3.0.23157_x86_64_setup.tar.gz
# tar -xvf pylon_6.3.0.23157_x86_64_setup.tar.gz
# copier le fichier pylon_6.3.0.23157_x86_64.tar.gz à l’endroit où installer le logiciel.
# tar -xvf pylon_6.3.0.23157_x86_64.tar.gz
# apt-get install ./pylon_6.3.0.23157-deb0_amd64.deb
COPY ./install/guitastro/pylon_6.3.0.23157-deb0_amd64.deb .
RUN apt-get install ./pylon_6.3.0.23157-deb0_amd64.deb

# Guitastro DEV only

# - ANACONDA / SPYDER
# https://www.anaconda.com/products/individual
# Install spyder

# - DOCUMENT GENERATION
# apt-get install python3-sphinx
# apt install spyder
# apt install graphviz libgraphviz-dev

#RUN apt-get install -y firefox x11vnc xvfb
#RUN echo "exec firefox" > ~/.xinitrc && chmod +x ~/.xinitrc
#CMD ["x11vnc", "-create", "-forever"]
#RUN x11vnc -create -forever


# Get IRAP self signed certificate
RUN echo | openssl s_client -connect gitlab.irap.omp.eu:443 -servername gitlab.irap.omp.eu 2>/dev/null | openssl x509 > /etc/ssl/certs/gitlab.irap.omp.eu.crt

RUN echo "$uid" > test.txt
# Adding new user (pyros_user) and creating his home folder
RUN useradd --create-home --shell /bin/bash pyros_user --uid $uid

# Create the work dir and set permissions as pyros_user 
RUN mkdir -p /home/pyros_user/app/ && chown -R pyros_user:pyros_user /home/pyros_user/app
WORKDIR /home/pyros_user/app

# Switch from root to pyros_user
USER pyros_user

RUN pip install --user --upgrade pip
#RUN pip install --user wheel
# TODO: pourquoi numpy ??? A virer ?
#RUN pip install --user numpy

# Copy local host machine files to image
COPY --chown=pyros_user:pyros_user . .
# Copy some aliases
RUN cp .bash_aliases ..
#RUN mv .bash_aliases ..
#COPY --chown=pyros_user:pyros_user .bash_aliases ..

# Adding local/bin to path to avoid pip warning
ENV PATH "$PATH:/home/pyros_user/.local/bin"

# Installing click on the image to prevent error on the first execution of the installation script
RUN pip install --user click

# (EP 23/3/2022) Installing pip-tools for the management of all the requirements*.txt files (python dependencies packages)
# NB :
# - pip-tools generates a smarter and smaller requirements.txt file than the traditional "pip freeze"
# - pip-tools is also better than the traditional "pip install -r" for installing the python packages
# - Unfortunatly, it is difficult to use with several requirements*.txt files as it is the case for this software : pyros + sphinx + guitastro...
# - So we cannot yet use it completely and still have to use the traditional "pip install -r" anyway ...
# - But we can at least use it to generate all the requirements*.txt files in a far better format
RUN pip install --user pip-tools

# Installing packages required for PyROS
RUN pip install --user -r ./install/requirements.txt
RUN pip install --user -r ./install/requirements_dev.txt