-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDockerfile_fi
More file actions
86 lines (79 loc) · 4.7 KB
/
Copy pathDockerfile_fi
File metadata and controls
86 lines (79 loc) · 4.7 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
# syntax=docker/dockerfile:1
# ---------------------------------------------------------------------------
# PERUSKUVA
# ---------------------------------------------------------------------------
# Peruskuvaksi on tässä esimerkissä valmiiksi rakennettu Jupyter-ympäristö, jossa Python ja yleiset
# tieteelliset kirjastot (numpy, scipy, matplotlib) ovat jo valmiiksi asennettuna.
# Päivämäärätunniste varmistaa, että jokainen kuvan rakennus käyttää täsmälleen samaa versiota.
# Myös pienempiä peruskuvia on saatavilla, joissa olisi esimerkiksi vain kevyt linux-asennus.
# Virallisia peruskuvia (Docker Official Images) on saatavilla osoitteessa https://hub.docker.com/u/library
FROM quay.io/jupyter/scipy-notebook:2025-12-31
# ---------------------------------------------------------------------------
# YMPÄRISTÖMUUTTUJAT
# ---------------------------------------------------------------------------
# Tätä muuttujaa voidaan lukea Python-koodista sen tunnistamiseksi, että ajo tapahtuu
# kontin sisällä, esimerkiksi tiedostopolkujen mukauttamiseksi. Katso VISU_tutorial_fi.ipynb:sta miten sitä käytetään.
ENV RUNNING_IN_CONTAINER=Yes
# ---------------------------------------------------------------------------
# TYÖHAKEMISTO
# ---------------------------------------------------------------------------
# Määrittää kontin sisäisen työskentelyhakemiston. Tämä on oletuspolku kaikkien kontissa ajettavien komentojen suorittamiselle.
WORKDIR /code
# ---------------------------------------------------------------------------
# JÄRJESTELMÄRIIPPUVUUDET
# ---------------------------------------------------------------------------
# Asennetaan järjestelmätason paketit, joita osa Python-kirjastoista tarvitsee.
# Kaikki vaiheet yhdistetään yhdeksi komennoksi kuvan koon pitämiseksi pienenä.
# Esimerkkinä asennetaan nano ja ca-certificates.
# nano = komentorivipohjainen tekstieditori. Hyödyllinen, kun kontin sisällä avataan terminaali tiedostojen muokkaamista varten.
# ca-certificates = luotetut SSL-varmenteet HTTPS-yhteyksiä varten
USER root
RUN apt-get update && \
apt-get install -y --no-install-recommends \
nano \
ca-certificates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Ajetaan kontti tavallisena (ei-root) käyttäjänä turvallisuussyistä.
USER ${NB_UID}
# ---------------------------------------------------------------------------
# PYTHON-PAKETIT
# ---------------------------------------------------------------------------
# Kopioidaan riippuvuustiedosto levykuvaan ja asennetaan paketit.
# Kun requirements.txt kopioidaan ennen muuta koodia, Docker voi
# ohittaa pakettien uudelleenasennuksen aina, kun vain koodi muuttuu
# ja kontti rakennetaan uudelleen.
COPY requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
pip install --no-cache-dir -r /code/requirements.txt
# ---------------------------------------------------------------------------
# KOODI
# ---------------------------------------------------------------------------
# Kopioidaan muistikirjat ja skriptit projektikansiosta (. = nykyinen polku) konttiin (.).
#
# Kuva sisältää vain koodin ja kirjastot. Huomaa, ettei dataa kopioida konttiin.
# Tämä on erityisen tärkeää tilanteessa, jossa käytettävissä olisi arkaluonteista dataa.
# Esimerkissä käytetään .dockerignore-tiedostoa, jotta /data-kansion sisältöä ei kopioida konttiin rakennuksen aikana.
#
# Demokäyttö: Lataa aineisto itse (katso README.md) ja siirrä se
# VISU-laskentaympäristöön yhdessä tämän kuvan kanssa SFTP:n avulla.
#
# Arkaluonteinen data: Data toimitetaan VISU:lle tutkimuspalveluiden toimesta tutkimusluvan mukaisesti.
# Data liitetään konttiin ajon aikana bind-liitoksella polkuun /code/data.
#
# Paikallisen datakansion tuomiseksi kontin sisälle:
# Docker (paikallinen): docker run --rm -p 8888:8888 -v ./data:/code/data visu-demo-image:jupyter-notebook
#
# Apptainer (VISU): apptainer exec --bind /data/import:/code/data visu-demo-container.sif \
# jupyter lab --ip=0.0.0.0 --no-browser
COPY . .
# ---------------------------------------------------------------------------
# KÄYNNISTYSKOMENTO
# ---------------------------------------------------------------------------
# Avaa JupyterLabin, kun Docker-kontti käynnistyy.
# --ip=0.0.0.0 tekee siitä saavutettavan selaimesta kontin ulkopuolelta.
#
# Huomaa: tätä komentoa ei käytetä Apptainerin kanssa. Aja sen sijaan vastaava komento:
# apptainer exec --bind /data/import:/code/data visu-demo-container.sif \
# jupyter lab --ip=0.0.0.0 --no-browser
CMD ["jupyter", "lab", "--ip=0.0.0.0", "--no-browser"]