Dockerfile
6.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
# https://pythonspeed.com/articles/base-image-python-docker-images
#FROM ubuntu:20.04
FROM ubuntu:22.04
#FROM ubuntu:latest
#FROM ubuntu:21.10 # with python3.9
#FROM ubuntu:18.04
# Pour eviter le warning : debconf: delaying package configuration, since apt-utils is not installed
ARG DEBIAN_FRONTEND=noninteractive
# Which glibc version ?
# ./SHELL
# $ ldd --version
# => ldd (Ubuntu GLIBC 2.31-0ubuntu9.7) 2.31
# Which Ubuntu version ?
# ./SHELL
# $ lsb_release -a
# => Distributor ID: Ubuntu
# => Description: Ubuntu 20.04.4 LTS
# => Release: 20.04
# => Codename: focal
ARG uid
################
# Mysql client #
################
RUN apt-get update && apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y tzdata
RUN apt-get install -y \
#mysql-server \
mysql-client \
#default-mysql-client \
libmysqlclient-dev \
nano vim \
git \
curl
################
# Python & pip #
################
# For apt-add-repository :
RUN apt-get install -y software-properties-common
# Needed for INDI
RUN apt-add-repository ppa:mutlaqja/ppa
# PYTHON
# Needed for python 3.10
RUN apt-add-repository ppa:deadsnakes/ppa
RUN apt-get install -y python3.10
RUN apt-get install -y python3.10-dev
RUN apt-get install -y python3.10-distutils
#RUN ln -sf /usr/bin/python3.10 /usr/bin/python3
RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2
#RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
RUN ln -sf /usr/bin/python3.10 /usr/bin/python3
RUN update-alternatives --config python3
RUN apt-get install -y python3-apt
RUN cd /usr/bin && ln -s python3 python
#RUN apt-get install -y python3-pip
RUN curl -sS https://bootstrap.pypa.io/get-pip.py | python3.10
#RUN pip3 install --upgrade pip
RUN python3 -m pip install --upgrade pip
# DEV only
# for dot => PNG diagrams generation with pyreverse (pylint)
RUN apt-get install -y graphviz graphviz-dev
#############
# GUITASTRO #
#############
#
# Guitastro C/C++ dependencies
#
# - ASTROMETRY.NET (in order to process images locally, without having to send (big) images to astrometry.net)
RUN apt-get install -y \
astrometry.net astrometry-data-tycho2 \
#astrometry-data-2mass \
# - PIL
python3-tk \
python3-pil python3-pil.imagetk
# - INDI
# https://indilib.org/get-indi/download-ubuntu.html
# Add repository
# 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 kstars-bleeding libindi1 indi-bin swig libz3-dev libcfitsio-dev libnova-dev libindi-dev
# Obligatoire ?
#RUN pip install --user --install-option="--prefix=" pyindi-client
# - ASTAP (Astrometry)
# 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) Not useful anymore
# 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
RUN apt-get update && apt-get upgrade -y
# 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
# - Graphic layer
# Add a VNC server to have local graphic windows
# When you run this container, a VNC server will be created automatically.
# You must bind a host port to the container’s port 5900 – this is the port the VNC server will be exposed on
RUN apt-get install -y x11vnc xvfb
#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
#################################
# PyROS user (better than root) #
#################################
# Adding new user (pyros_user) and creating his home folder
RUN useradd -m -s /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 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 ..
# 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 python3 -m pip install --user click
RUN python3 -m pip install --user setuptools==58
# (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 python3 -m pip install --user pip-tools
# Installing packages required for Guitastro
RUN pip-compile ./vendor/guitastro/install/requirements.in
RUN python3 -m pip install --user -r ./vendor/guitastro/install/requirements.txt
# Maybe unnecessary because same requirements as for pyros requirements_dev (?)
#RUN pip install --user -r ./vendor/guitastro/install/requirements_dev.txt
# Installing packages required for PyROS
RUN python3 -m pip install --user -r ./install/requirements.txt
RUN python3 -m pip install --user -r ./install/requirements_dev.txt