├── .github └── FUNDING.yml ├── .gitignore ├── .hadolint.yaml ├── CODE_OF_CONDUCT.md ├── CUDA.md ├── CUDA_VERSION_MATRIX.md ├── LICENSE ├── NOTES.md ├── README.md ├── SECURITY.md ├── VERSION_MATRIX.md ├── assets ├── WBF_agroscope_e_rgb_pos_quer_1024.jpg ├── cuda-screenshot.png └── screenshot.png ├── base ├── .gitlab-ci.yml ├── 3.6.2.Dockerfile ├── 3.6.3.Dockerfile ├── 4.0.0.Dockerfile ├── 4.0.1.Dockerfile ├── 4.0.2.Dockerfile ├── 4.0.3.Dockerfile ├── 4.0.4.Dockerfile ├── 4.0.5.Dockerfile ├── 4.1.0.Dockerfile ├── 4.1.1.Dockerfile ├── 4.1.2.Dockerfile ├── 4.1.3.Dockerfile ├── 4.2.0.Dockerfile ├── 4.2.1.Dockerfile ├── 4.2.2.Dockerfile ├── 4.2.3.Dockerfile ├── 4.3.0.Dockerfile ├── 4.3.1.Dockerfile ├── 4.3.2.Dockerfile ├── 4.3.3.Dockerfile ├── 4.4.0.Dockerfile ├── 4.4.1.Dockerfile ├── 4.4.2.Dockerfile ├── 4.4.3.Dockerfile ├── assets │ └── opt │ │ └── code-server │ │ ├── code-server.svg │ │ └── src │ │ └── browser │ │ └── media │ │ ├── css │ │ └── fonts.css │ │ └── fonts │ │ ├── MesloLGS NF Bold Italic.woff │ │ ├── MesloLGS NF Bold Italic.woff2 │ │ ├── MesloLGS NF Bold.woff │ │ ├── MesloLGS NF Bold.woff2 │ │ ├── MesloLGS NF Italic.woff │ │ ├── MesloLGS NF Italic.woff2 │ │ ├── MesloLGS NF Regular.woff │ │ └── MesloLGS NF Regular.woff2 ├── conf │ ├── cuda │ │ └── shell │ │ │ └── etc │ │ │ └── profile.d │ │ │ └── 00-reset-path.sh │ ├── ipython │ │ └── usr │ │ │ └── local │ │ │ └── etc │ │ │ └── ipython │ │ │ └── ipython_config.py │ ├── jupyter │ │ └── etc │ │ │ └── jupyter │ │ │ └── jupyter_server_config.py │ ├── jupyterlab │ │ └── usr │ │ │ └── local │ │ │ └── share │ │ │ └── jupyter │ │ │ └── lab │ │ │ └── settings │ │ │ └── overrides.json │ ├── rstudio │ │ └── etc │ │ │ └── rstudio │ │ │ ├── file-locks │ │ │ ├── logging.conf │ │ │ ├── rserver.conf │ │ │ └── rsession.conf │ ├── shell │ │ └── etc │ │ │ ├── profile.d │ │ │ └── 00-reset-path.sh │ │ │ ├── skel │ │ │ └── .profile │ │ │ └── zsh │ │ │ └── zprofile │ └── user │ │ └── var │ │ └── backups │ │ └── skel │ │ ├── .config │ │ └── rstudio │ │ │ └── rstudio-prefs.json │ │ ├── .local │ │ └── share │ │ │ └── code-server │ │ │ └── User │ │ │ └── settings.json │ │ └── .p10k.zsh ├── latest.Dockerfile └── scripts │ └── usr │ └── local │ └── bin │ ├── before-notebook.d │ ├── 10-env.sh │ ├── 11-home.sh │ ├── 12-r.sh │ ├── 13-update-cran.sh │ ├── 30-code-server.sh │ ├── 50-rstudio.sh │ ├── 71-tensorboard.sh │ ├── 90-limits.sh │ └── 95-misc.sh │ ├── busy │ ├── python-kernel.sh │ ├── run-hooks.sh │ ├── start-notebook.d │ └── 10-populate.sh │ ├── start-notebook.sh │ ├── start-singleuser.sh │ └── start.sh ├── common └── subtags │ ├── devtools │ ├── 4.2.2.Dockerfile │ ├── 4.2.3.Dockerfile │ ├── 4.3.0.Dockerfile │ ├── 4.3.1.Dockerfile │ ├── 4.3.2.Dockerfile │ ├── 4.3.3.Dockerfile │ ├── 4.4.0.Dockerfile │ ├── 4.4.1.Dockerfile │ ├── 4.4.2.Dockerfile │ ├── 4.4.3.Dockerfile │ └── latest.Dockerfile │ ├── docker │ └── Dockerfile │ └── root │ └── Dockerfile ├── geospatial ├── .gitlab-ci.yml ├── 3.6.2.Dockerfile ├── 3.6.3.Dockerfile ├── 4.0.0.Dockerfile ├── 4.0.1.Dockerfile ├── 4.0.2.Dockerfile ├── 4.0.3.Dockerfile ├── 4.0.4.Dockerfile ├── 4.0.5.Dockerfile ├── 4.1.0.Dockerfile ├── 4.1.1.Dockerfile ├── 4.1.2.Dockerfile ├── 4.1.3.Dockerfile ├── 4.2.0.Dockerfile ├── 4.2.1.Dockerfile ├── 4.2.2.Dockerfile ├── 4.2.3.Dockerfile ├── 4.3.0.Dockerfile ├── 4.3.1.Dockerfile ├── 4.3.2.Dockerfile ├── 4.3.3.Dockerfile ├── 4.4.0.Dockerfile ├── 4.4.1.Dockerfile ├── 4.4.2.Dockerfile ├── 4.4.3.Dockerfile └── latest.Dockerfile ├── qgisprocess ├── .gitlab-ci.yml ├── 4.3.0.Dockerfile ├── 4.3.1.Dockerfile ├── 4.3.2.Dockerfile ├── 4.3.3.Dockerfile ├── 4.4.0.Dockerfile ├── 4.4.1.Dockerfile ├── 4.4.2.Dockerfile ├── 4.4.3.Dockerfile ├── conf │ └── user │ │ └── var │ │ └── backups │ │ └── skel │ │ └── .local │ │ └── share │ │ └── QGIS │ │ └── QGIS3 │ │ └── profiles │ │ └── default │ │ └── QGIS │ │ └── QGIS3.ini ├── latest.Dockerfile └── scripts │ └── usr │ └── local │ └── bin │ └── before-notebook.d │ └── 70-qgis.sh ├── tidyverse ├── .gitlab-ci.yml ├── 3.6.2.Dockerfile ├── 3.6.3.Dockerfile ├── 4.0.0.Dockerfile ├── 4.0.1.Dockerfile ├── 4.0.2.Dockerfile ├── 4.0.3.Dockerfile ├── 4.0.4.Dockerfile ├── 4.0.5.Dockerfile ├── 4.1.0.Dockerfile ├── 4.1.1.Dockerfile ├── 4.1.2.Dockerfile ├── 4.1.3.Dockerfile ├── 4.2.0.Dockerfile ├── 4.2.1.Dockerfile ├── 4.2.2.Dockerfile ├── 4.2.3.Dockerfile ├── 4.3.0.Dockerfile ├── 4.3.1.Dockerfile ├── 4.3.2.Dockerfile ├── 4.3.3.Dockerfile ├── 4.4.0.Dockerfile ├── 4.4.1.Dockerfile ├── 4.4.2.Dockerfile ├── 4.4.3.Dockerfile └── latest.Dockerfile └── verse ├── .gitlab-ci.yml ├── 3.6.2.Dockerfile ├── 3.6.3.Dockerfile ├── 4.0.0.Dockerfile ├── 4.0.1.Dockerfile ├── 4.0.2.Dockerfile ├── 4.0.3.Dockerfile ├── 4.0.4.Dockerfile ├── 4.0.5.Dockerfile ├── 4.1.0.Dockerfile ├── 4.1.1.Dockerfile ├── 4.1.2.Dockerfile ├── 4.1.3.Dockerfile ├── 4.2.0.Dockerfile ├── 4.2.1.Dockerfile ├── 4.2.2.Dockerfile ├── 4.2.3.Dockerfile ├── 4.3.0.Dockerfile ├── 4.3.1.Dockerfile ├── 4.3.2.Dockerfile ├── 4.3.3.Dockerfile ├── 4.4.0.Dockerfile ├── 4.4.1.Dockerfile ├── 4.4.2.Dockerfile ├── 4.4.3.Dockerfile └── latest.Dockerfile /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: benz0li 2 | liberapay: benz0li 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .vscode/* 2 | !.vscode/settings.json 3 | !.vscode/tasks.json 4 | !.vscode/launch.json 5 | !.vscode/extensions.json 6 | *.code-workspace 7 | .DS_Store -------------------------------------------------------------------------------- /.hadolint.yaml: -------------------------------------------------------------------------------- 1 | ignored: 2 | - DL3003 3 | - DL3006 4 | - DL3008 5 | - DL3013 6 | -------------------------------------------------------------------------------- /CUDA_VERSION_MATRIX.md: -------------------------------------------------------------------------------- 1 | # CUDA Version Matrix 2 | 3 | Image tags = R versions 4 | 5 | Topmost entry = Tag `latest` 6 | 7 | | R | Python | SAGA[^1] | CUDA | cuBLAS | cuDNN | NCCL | TensorRT[^2] | Linux distro | 8 | |:------|:--------|:---------|:-------|:----------|:----------|:-------|:-------------------------|:-------------| 9 | | 4.5.0 | 3.12.11 | 7.3.0 | 12.9.0 | 12.9.0.13 | 8.9.7.29 | 2.26.5 | 10.11.0.33/
10.3.0.26 | Ubuntu 22.04 | 10 | | 4.4.3 | 3.12.10 | 7.3.0 | 12.8.1 | 12.8.4.1 | 8.9.7.29 | 2.25.1 | 10.9.0.34/
10.3.0.26 | Ubuntu 22.04 | 11 | | 4.4.2 | 3.12.9 | 7.3.0 | 12.8.0 | 12.8.3.14 | 8.9.7.29 | 2.25.1 | 10.8.0.43/
10.3.0.26 | Ubuntu 22.04 | 12 | | 4.4.1 | 3.12.7 | 7.3.0 | 12.6.2 | 12.6.3.3 | 8.9.7.29 | 2.23.4 | 10.6.0.26/
10.3.0.26 | Ubuntu 22.04 | 13 | | 4.4.0 | 3.12.4 | 7.3.0 | 12.5.0 | 12.5.2.13 | 8.9.7.29 | 2.21.5 | 10.0.1.6 | Ubuntu 22.04 | 14 | | 4.3.3 | 3.11.9 | 7.3.0 | 11.8.0 | 11.11.3.6 | 8.9.6.50 | 2.15.5 | 8.5.3[^3] | Ubuntu 22.04 | 15 | | 4.3.2 | 3.11.8 | 7.3.0 | 11.8.0 | 11.11.3.6 | 8.9.6.50 | 2.15.5 | 8.5.3[^3] | Ubuntu 22.04 | 16 | | 4.3.1 | 3.11.6 | 7.3.0 | 11.8.0 | 11.11.3.6 | 8.9.0.131 | 2.15.5 | 8.5.3[^3] | Ubuntu 22.04 | 17 | | 4.3.0 | 3.11.4 | 7.3.0 | 11.8.0 | 11.11.3.6 | 8.9.0.131 | 2.15.5 | 8.5.3[^3] | Ubuntu 22.04 | 18 | | 4.2.3 | 3.10.11 | n/a | 11.8.0 | 11.11.3.6 | 8.7.0.84 | 2.15.5 | 8.5.3[^3] | Ubuntu 22.04 | 19 | | 4.2.2 | 3.10.10 | n/a | 11.8.0 | 11.11.3.6 | 8.7.0.84 | 2.16.2 | 8.5.3 | Ubuntu 20.04 | 20 | 21 | [^1]: qgisprocess image 22 | [^2]: amd64/arm64 23 | [^3]: `amd64` only 24 | 25 | ## PyTorch/TensorFlow compatibility 26 | 27 | | Python | CUDA | PyTorch[^4] | TensorFlow[^5] | 28 | |:-------|:-----|:---------------|:----------------------| 29 | | 3.12 | 12.9 | version ≥ 2.4 | 2.18 > version ≥ 2.16 | 30 | | 3.12 | 12.8 | version ≥ 2.4 | 2.18 > version ≥ 2.16 | 31 | | 3.12 | 12.6 | version ≥ 2.4 | 2.18 > version ≥ 2.16 | 32 | | 3.12 | 12.5 | version ≥ 2.4 | 2.18 > version ≥ 2.16 | 33 | | 3.11 | 11.8 | version ≥ 2.0 | 2.16 > version ≥ 2.12 | 34 | | 3.10 | 11.8 | version ≥ 1.12 | 2.16 > version ≥ 2.9 | 35 | 36 | [^4]: Installs its own CUDA dependencies 37 | [^5]: The expected TensorRT version is symlinked to the installed TensorRT 38 | version. 39 | ❗️ This relies on backwards compatibility of TensorRT, which may not always be 40 | given. 41 | 42 | ## Recommended NVIDIA driver (Regular) 43 | 44 | | CUDA | Linux driver version | Windows driver version[^6] | 45 | |:-------|:---------------------|:---------------------------| 46 | | 12.9.0 | ≥ 575.51.03 | ≥ 576.02 | 47 | | 12.8.1 | ≥ 570.124.06 | ≥ 572.61 | 48 | | 12.8.0 | ≥ 570.117 | ≥ 572.30 | 49 | | 12.6.2 | ≥ 560.35.03 | ≥ 560.94 | 50 | | 12.5.0 | ≥ 555.42.02 | ≥ 555.85 | 51 | | 11.8.0 | ≥ 520.61.05 | ≥ 520.06 | 52 | 53 | [^6]: [GPU support in Docker Desktop | Docker Docs](https://docs.docker.com/desktop/gpu/) 54 | [Nvidia GPU Support for Windows · Issue #19005 · containers/podman](https://github.com/containers/podman/issues/19005) 55 | 56 | ## Supported NVIDIA drivers (LTSB) 57 | 58 | Only works with 59 | [NVIDIA Data Center GPUs](https://resources.nvidia.com/l/en-us-gpu) or 60 | [select NGC-Ready NVIDIA RTX boards](https://docs.nvidia.com/certification-programs/ngc-ready-systems/index.html). 61 | 62 | | CUDA | Driver version 535[^7] | Driver version 470[^8] | 63 | |:-------|:----------------------:|:----------------------:| 64 | | 12.9.0 | 🟢 | 🔵 | 65 | | 12.8.1 | 🟢 | 🔵 | 66 | | 12.8.0 | 🟢 | 🔵 | 67 | | 12.6.2 | 🟢 | 🔵 | 68 | | 12.5.0 | 🟢 | 🔵 | 69 | | 11.8.0 | 🟡 | 🟢 | 70 | 71 | 🔵: Supported with the CUDA forward compat package only 72 | 🟢: Supported due to minor-version compatibility[^9] 73 | 🟡: Supported due to backward compatibility 74 | 75 | [^7]: EOL: June 2026 76 | [^8]: EOL: July 2024 77 | [^9]: or the CUDA forward compat package 78 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2020 b-data GmbH 2 | 3 | With the exceptions noted below, the code in this directory is distributed under 4 | the terms of the MIT License: 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | 24 | This directory also contains code with other copyrights. The affected files, 25 | their copyrights and license statements are listed below. 26 | 27 | -------------------------------------------------------------------------------- 28 | base/conf/jupyter/etc/jupyter/jupyter_server_config.py 29 | base/scripts/usr/local/bin/before-notebook.d/71-tensorboard.sh 30 | base/scripts/usr/local/bin/run-hooks.sh 31 | base/scripts/usr/local/bin/start-notebook.sh 32 | base/scripts/usr/local/bin/start-singleuser.sh 33 | base/scripts/usr/local/bin/start.sh 34 | Copyright (c) Jupyter Development Team. 35 | 36 | Distributed under the terms of the Modified BSD License. 37 | 38 | Redistribution and use in source and binary forms, with or without 39 | modification, are permitted provided that the following conditions are met: 40 | 41 | 1. Redistributions of source code must retain the above copyright notice, this 42 | list of conditions and the following disclaimer. 43 | 44 | 2. Redistributions in binary form must reproduce the above copyright notice, 45 | this list of conditions and the following disclaimer in the documentation 46 | and/or other materials provided with the distribution. 47 | 48 | 3. Neither the name of the copyright holder nor the names of its 49 | contributors may be used to endorse or promote products derived from 50 | this software without specific prior written permission. 51 | 52 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 53 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 54 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 55 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 56 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 57 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 58 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 59 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 60 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 61 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 62 | 63 | -------------------------------------------------------------------------------- 64 | -------------------------------------------------------------------------------- /SECURITY.md: -------------------------------------------------------------------------------- 1 | ## Supported Versions 2 | 3 | Only the docker image with the latest version of R is supported with security 4 | updates. 5 | 6 | ## Reporting a Vulnerability 7 | 8 | To report a vulnerability in the latest docker image, email the maintainer 9 | olivier.benz@b-data.ch. 10 | 11 | ## Vulnerabilities in Prior Versions 12 | 13 | Vulnerabilities in docker images with prior versions of R are not fixed. 14 | 15 | Whenever a new version of R is released, the previous version's docker image is 16 | rebuilt once again and then frozen. 17 | 18 | Docker images *may* be rebuilt or extended if they fail to start or have runtime 19 | issues. 20 | -------------------------------------------------------------------------------- /VERSION_MATRIX.md: -------------------------------------------------------------------------------- 1 | # Version Matrix 2 | 3 | Image tags = R versions 4 | 5 | Topmost entry = Tag `latest` 6 | 7 | ## All images 8 | 9 | | R | Python | Jupyter Hub | Jupyter Lab | code‑server (Code) | RStudio | Neovim | Git | Git LFS | Pandoc | CRAN date | Linux distro | 10 | |:------|:--------|:------------|:------------|:-------------------|:--------------|:-------|:-------|:--------|:-------|:-----------|:-------------| 11 | | 4.5.0 | 3.12.11 | 5.3.0 | 4.4.3 | 4.100.3 (1.100.3) | 2025.05.1+513 | 0.11.2 | 2.49.0 | 3.6.1 | 3.6.3 | | Debian 12 | 12 | | 4.4.3 | 3.12.10 | 5.2.1 | 4.3.6 | 4.99.2 (1.99.2) | 2024.12.1+563 | 0.11.0 | 2.49.0 | 3.6.1 | 3.4 | 2025‑04‑11 | Debian 12 | 13 | | 4.4.2 | 3.12.9 | 5.2.1 | 4.3.5 | 4.97.2 (1.97.2) | 2024.12.1+563 | 0.10.4 | 2.48.1 | 3.6.1 | 3.4 | 2025‑02‑28 | Debian 12 | 14 | | 4.4.1 | 3.12.7 | 5.2.1 | 4.2.5 | 4.93.1 (1.93.1) | 2024.09.0+375 | 0.10.2 | 2.47.0 | 3.5.1 | 3.2 | 2024‑10‑31 | Debian 12 | 15 | | 4.4.0 | 3.12.4 | 5.0.0 | 4.2.2 | 4.90.0 (1.90.0) | 2024.04.2+764 | n/a | 2.45.2 | 3.5.1 | 3.1.11 | 2024‑06‑14 | Debian 12 | 16 | | 4.3.3 | 3.11.9 | 4.1.5 | 4.1.6 | 4.23.0 (1.88.0) | n/a | n/a | 2.44.0 | 3.5.1 | 3.1.11 | 2024‑04‑24 | Debian 12 | 17 | | 4.3.2 | 3.11.8 | 4.0.2 | 4.1.2 | 4.21.2 (1.86.2) | n/a | n/a | 2.44.0 | 3.4.1 | 3.1.11 | 2024‑02‑29 | Debian 12 | 18 | | 4.3.1 | 3.11.6 | 4.0.2 | 3.6.6 | 4.18.0 (1.83.1) | n/a | n/a | 2.42.0 | 3.4.0 | 3.1.1 | 2023‑10‑31 | Debian 12 | 19 | | 4.3.0 | 3.11.4 | 4.0.1 | 3.6.4 | 4.13.0 (1.78.2) | n/a | n/a | 2.41.0 | 3.3.0 | 3.1.1 | n/a | Debian 12 | 20 | | 4.2.3 | 3.10.11 | 4.0.0 | 3.6.3 | 4.9.1 (1.73.1) | n/a | n/a | 2.40.0 | 3.3.0 | 2.19.2 | n/a | Debian 11 | 21 | | 4.2.2 | 3.10.10 | 3.1.1 | 3.6.1 | 4.9.1 (1.73.1) | n/a | n/a | 2.40.0 | 3.3.0 | 2.19.2 | n/a | Debian 11 | 22 | | 4.2.1 | 3.9.2 | 2.3.1 | 3.5.0 | 4.8.1 (1.72.1) | n/a | n/a | 2.38.1 | 3.2.0 | 2.19.2 | n/a | Debian 11 | 23 | | 4.2.0 | 3.9.2 | 2.3.1 | 3.4.3 | 4.4.0 (1.66.2) | n/a | n/a | 2.36.1 | 3.2.0 | 2.18 | n/a | Debian 11 | 24 | 25 | ## verse+ images 26 | 27 | | R | CTAN date | Quarto | 28 | |:------|:-----------|:------------| 29 | | 4.5.0 | | 1.7.31 | 30 | | 4.4.3 | 2025‑04‑11 | 1.6.43 | 31 | | 4.4.2 | 2025‑02‑28 | 1.6.42 | 32 | | 4.4.1 | 2024‑10‑31 | 1.5.57 | 33 | | 4.4.0 | 2024‑06‑14 | 1.4.555 | 34 | | 4.3.3 | 2024‑04‑24 | 1.4.553 | 35 | | 4.3.2 | 2024‑02‑29 | 1.4.550 | 36 | | 4.3.1 | 2023‑10‑31 | 1.3.450 | 37 | | 4.3.0 | 2023‑06‑16 | 1.3.361 | 38 | | 4.2.3 | 2023‑04‑21 | 1.2.475[^1] | 39 | | 4.2.2 | 2023‑03‑15 | 1.2.335[^1] | 40 | | 4.2.1 | 2022‑10‑31 | 1.1.251[^1] | 41 | | 4.2.0 | 2022‑06‑23 | n/a | 42 | 43 | ## qgisprocess images 44 | 45 | | R | QGIS | SAGA | OTB[^1] | 46 | |:------|:-------|:------|:--------| 47 | | 4.5.0 | 3.42.3 | 9.1.3 | 9.1.1 | 48 | | 4.4.3 | 3.42.1 | 9.1.3 | 9.1.1 | 49 | | 4.4.2 | 3.42.0 | 9.1.3 | 9.1.0 | 50 | | 4.4.1 | 3.40.0 | 9.1.3 | 9.1.0 | 51 | | 4.4.0 | 3.36.3 | 9.1.3 | 9.0.0 | 52 | | 4.3.3 | 3.36.2 | 9.1.3 | 9.0.0 | 53 | | 4.3.2 | 3.36.0 | 9.1.3 | 8.1.2 | 54 | | 4.3.1 | 3.34.0 | 9.1.3 | 8.1.2 | 55 | | 4.3.0 | 3.30.3 | 8.5.0 | 8.1.1 | 56 | | 4.2.3 | n/a | n/a | n/a | 57 | | 4.2.2 | n/a | n/a | n/a | 58 | | 4.2.1 | n/a | n/a | n/a | 59 | | 4.2.0 | n/a | n/a | n/a | 60 | 61 | [^1]: `amd64` only; QGIS v3.36.0 w/o OTB provider 62 | -------------------------------------------------------------------------------- /assets/WBF_agroscope_e_rgb_pos_quer_1024.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/assets/WBF_agroscope_e_rgb_pos_quer_1024.jpg -------------------------------------------------------------------------------- /assets/cuda-screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/assets/cuda-screenshot.png -------------------------------------------------------------------------------- /assets/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/assets/screenshot.png -------------------------------------------------------------------------------- /base/assets/opt/code-server/code-server.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/css/fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'MesloLGS NF'; 3 | src: url('../fonts/MesloLGS NF Regular.woff2') format('woff2'), 4 | url('../fonts/MesloLGS NF Regular.woff') format('woff'), 5 | url('../fonts/MesloLGS NF Regular.ttf') format('truetype'); 6 | font-weight: normal; 7 | font-style: normal; 8 | } 9 | @font-face { 10 | font-family: 'MesloLGS NF'; 11 | src: url('../fonts/MesloLGS NF Italic.woff2') format('woff2'), 12 | url('../fonts/MesloLGS NF Italic.woff') format('woff'), 13 | url('../fonts/MesloLGS NF Italic.ttf') format('truetype'); 14 | font-weight: normal; 15 | font-style: italic; 16 | } 17 | @font-face { 18 | font-family: 'MesloLGS NF'; 19 | src: url('../fonts/MesloLGS NF Bold.woff2') format('woff2'), 20 | url('../fonts/MesloLGS NF Bold.woff') format('woff'), 21 | url('../fonts/MesloLGS NF Bold.ttf') format('truetype'); 22 | font-weight: bold; 23 | font-style: normal; 24 | } 25 | @font-face { 26 | font-family: 'MesloLGS NF'; 27 | src: url('../fonts/MesloLGS NF Bold Italic.woff2') format('woff2'), 28 | url('../fonts/MesloLGS NF Bold Italic.woff') format('woff'), 29 | url('../fonts/MesloLGS NF Bold Italic.ttf') format('truetype'); 30 | font-weight: bold; 31 | font-style: italic; 32 | } 33 | -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold Italic.woff -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold Italic.woff2 -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold.woff -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Bold.woff2 -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Italic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Italic.woff -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Italic.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Italic.woff2 -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Regular.woff -------------------------------------------------------------------------------- /base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/b-data/jupyterlab-r-docker-stack/ca96aa41ddcd37207a3e6dccc29445a82e4a1df8/base/assets/opt/code-server/src/browser/media/fonts/MesloLGS NF Regular.woff2 -------------------------------------------------------------------------------- /base/conf/cuda/shell/etc/profile.d/00-reset-path.sh: -------------------------------------------------------------------------------- 1 | # Reset default PATH settings 2 | PATH="/opt/code-server/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 3 | export PATH 4 | -------------------------------------------------------------------------------- /base/conf/ipython/usr/local/etc/ipython/ipython_config.py: -------------------------------------------------------------------------------- 1 | c.InlineBackend.figure_formats = {"svg", "pdf"} 2 | 3 | import os 4 | 5 | if ( 6 | os.path.exists(os.path.join(os.environ["HOME"], "bin")) 7 | and not os.path.join(os.environ["HOME"], "bin") in os.getenv("PATH", "") 8 | ): 9 | os.environ["PATH"] = ( 10 | os.path.join(os.environ["HOME"], "bin") 11 | + os.pathsep 12 | + os.getenv("PATH", "") 13 | ) 14 | 15 | if ( 16 | os.path.exists(os.path.join(os.environ["HOME"], ".local", "bin")) 17 | and not os.path.join(os.environ["HOME"], ".local", "bin") 18 | in os.getenv("PATH", "") 19 | ): 20 | os.environ["PATH"] = ( 21 | os.path.join(os.environ["HOME"], ".local", "bin") 22 | + os.pathsep 23 | + os.getenv("PATH", "") 24 | ) 25 | -------------------------------------------------------------------------------- /base/conf/jupyter/etc/jupyter/jupyter_server_config.py: -------------------------------------------------------------------------------- 1 | # Copyright (c) Jupyter Development Team. 2 | # Distributed under the terms of the Modified BSD License. 3 | # mypy: ignore-errors 4 | import os 5 | import shutil 6 | import stat 7 | import subprocess 8 | from pathlib import Path 9 | 10 | from jupyter_core.paths import jupyter_data_dir 11 | 12 | c = get_config() # noqa: F821 # type: ignore 13 | # Listen on all interfaces (IPv4 and IPv6) 14 | c.ServerApp.ip = "" 15 | #c.ServerApp.open_browser = False 16 | 17 | # https://github.com/jupyter/notebook/issues/3130 18 | c.FileContentsManager.delete_to_trash = False 19 | 20 | def _codeserver_command(port): 21 | full_path = shutil.which("code-server") 22 | if not full_path: 23 | raise FileNotFoundError("Can not find code-server in $PATH") 24 | work_dir = os.getenv("CODE_WORKDIR", None) 25 | if work_dir is None: 26 | work_dir = os.getenv("JUPYTER_SERVER_ROOT", ".") 27 | elif os.path.isdir(work_dir) is False: 28 | os.mkdir(work_dir) 29 | data_dir = os.getenv("CODE_USER_DATA_DIR", "") 30 | if data_dir != "": 31 | data_dir = "--user-data-dir=" + str(data_dir) 32 | extensions_dir = os.getenv("CODE_EXTENSIONS_DIR", "") 33 | if extensions_dir != "": 34 | extensions_dir = "--extensions-dir=" + str(extensions_dir) 35 | 36 | return [ 37 | full_path, 38 | "--socket={unix_socket}", 39 | "--auth=none", 40 | "--disable-update-check", 41 | "--disable-telemetry", 42 | data_dir, 43 | extensions_dir, 44 | work_dir, 45 | ] 46 | 47 | c.ServerProxy.servers = { 48 | "code-server": { 49 | "command": _codeserver_command, 50 | "timeout": 20, 51 | "launcher_entry": { 52 | "title": "code-server", 53 | "icon_path": "/opt/code-server/code-server.svg" 54 | }, 55 | "unix_socket": "/tmp/code-server-ipc.sock", 56 | "new_browser_tab": True 57 | } 58 | } 59 | 60 | # Generate a self-signed certificate 61 | OPENSSL_CONFIG = """\ 62 | [req] 63 | distinguished_name = req_distinguished_name 64 | [req_distinguished_name] 65 | """ 66 | if "GEN_CERT" in os.environ: 67 | dir_name = Path(jupyter_data_dir()) 68 | dir_name.mkdir(parents=True, exist_ok=True) 69 | pem_file = dir_name / "notebook.pem" 70 | 71 | # Generate an openssl.cnf file to set the distinguished name 72 | cnf_file = Path("/usr/lib/ssl/openssl.cnf") 73 | if not cnf_file.exists(): 74 | cnf_file.write_text(OPENSSL_CONFIG) 75 | 76 | # Generate a certificate if one doesn't exist on disk 77 | subprocess.check_call( 78 | [ 79 | "openssl", 80 | "req", 81 | "-new", 82 | "-newkey=rsa:2048", 83 | "-days=365", 84 | "-nodes", 85 | "-x509", 86 | "-subj=/C=XX/ST=XX/L=XX/O=generated/CN=generated", 87 | f"-keyout={pem_file}", 88 | f"-out={pem_file}", 89 | ] 90 | ) 91 | # Restrict access to the file 92 | pem_file.chmod(stat.S_IRUSR | stat.S_IWUSR) 93 | c.ServerApp.certfile = str(pem_file) 94 | 95 | # Change default umask for all subprocesses of the notebook server if set in the environment 96 | if "NB_UMASK" in os.environ: 97 | os.umask(int(os.environ["NB_UMASK"], 8)) 98 | -------------------------------------------------------------------------------- /base/conf/jupyterlab/usr/local/share/jupyter/lab/settings/overrides.json: -------------------------------------------------------------------------------- 1 | { 2 | "@jupyterlab/apputils-extension:notification": { 3 | "checkForUpdates": false, 4 | "fetchNews": false 5 | }, 6 | "@jupyterlab/apputils-extension:themes": { 7 | "theme": "JupyterLab Dark" 8 | }, 9 | "@jupyterlab/terminal-extension:plugin": { 10 | "fontFamily": "MesloLGS NF" 11 | }, 12 | "@jupyter-lsp/jupyterlab-lsp:plugin": { 13 | "language_servers": { 14 | "pylsp": { 15 | "serverSettings": { 16 | "pylsp.plugins.pydocstyle.enabled": true, 17 | "pylsp.plugins.pyflakes.enabled": false, 18 | "pylsp.plugins.flake8.enabled": true 19 | } 20 | }, 21 | "r-languageserver": { 22 | "serverSettings": { 23 | "r.lsp.debug": false, 24 | "r.lsp.diagnostics": false 25 | } 26 | } 27 | } 28 | } 29 | } -------------------------------------------------------------------------------- /base/conf/rstudio/etc/rstudio/file-locks: -------------------------------------------------------------------------------- 1 | lock-type=advisory 2 | -------------------------------------------------------------------------------- /base/conf/rstudio/etc/rstudio/logging.conf: -------------------------------------------------------------------------------- 1 | [*] 2 | log-level=warn 3 | logger-type=syslog 4 | -------------------------------------------------------------------------------- /base/conf/rstudio/etc/rstudio/rserver.conf: -------------------------------------------------------------------------------- 1 | # Server Configuration File 2 | 3 | auth-minimum-user-id=0 4 | -------------------------------------------------------------------------------- /base/conf/rstudio/etc/rstudio/rsession.conf: -------------------------------------------------------------------------------- 1 | # R Session Configuration File 2 | 3 | session-default-new-project-dir=~/projects 4 | copilot-enabled=1 5 | -------------------------------------------------------------------------------- /base/conf/shell/etc/profile.d/00-reset-path.sh: -------------------------------------------------------------------------------- 1 | # Reset default PATH settings 2 | PATH="/opt/code-server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" 3 | export PATH 4 | -------------------------------------------------------------------------------- /base/conf/shell/etc/skel/.profile: -------------------------------------------------------------------------------- 1 | # ~/.profile: executed by the command interpreter for login shells. 2 | # This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login 3 | # exists. 4 | # see /usr/share/doc/bash/examples/startup-files for examples. 5 | # the files are located in the bash-doc package. 6 | 7 | # the default umask is set in /etc/profile; for setting the umask 8 | # for ssh logins, install and configure the libpam-umask package. 9 | #umask 022 10 | 11 | # if running bash 12 | if [ -n "$BASH_VERSION" ]; then 13 | # include .bashrc if it exists 14 | if [ -f "$HOME/.bashrc" ]; then 15 | . "$HOME/.bashrc" 16 | fi 17 | else 18 | # set PATH so it includes user's private bin if it exists 19 | if [ -d "$HOME/bin" ] ; then 20 | PATH="$HOME/bin:$PATH" 21 | fi 22 | 23 | # set PATH so it includes user's private bin if it exists 24 | if [ -d "$HOME/.local/bin" ] ; then 25 | PATH="$HOME/.local/bin:$PATH" 26 | fi 27 | fi 28 | -------------------------------------------------------------------------------- /base/conf/shell/etc/zsh/zprofile: -------------------------------------------------------------------------------- 1 | # /etc/zsh/zprofile: system-wide .zprofile file for zsh(1). 2 | # 3 | # This file is sourced only for login shells (i.e. shells 4 | # invoked with "-" as the first character of argv[0], and 5 | # shells invoked with the -l flag.) 6 | # 7 | # Global Order: zshenv, zprofile, zshrc, zlogin 8 | 9 | . /etc/profile.d/00-reset-path.sh 10 | -------------------------------------------------------------------------------- /base/conf/user/var/backups/skel/.config/rstudio/rstudio-prefs.json: -------------------------------------------------------------------------------- 1 | { 2 | "auto_append_newline": true, 3 | "check_arguments_to_r_function_calls": true, 4 | "check_for_updates": false, 5 | "check_unexpected_assignment_in_function_call": true, 6 | "default_encoding": "UTF-8", 7 | "default_open_project_location": "~/projects", 8 | "editor_theme": "Tomorrow Night", 9 | "initial_working_directory": "~/working", 10 | "load_workspace": false, 11 | "posix_terminal_shell": "zsh", 12 | "python_project_environment_automatic_activate": false, 13 | "reuse_sessions_for_project_links": true, 14 | "save_workspace": "never", 15 | "server_editor_font": "MesloLGS NF", 16 | "server_editor_font_enabled": true, 17 | "style_diagnostics": true, 18 | "warn_variable_defined_but_not_used": true 19 | } 20 | -------------------------------------------------------------------------------- /base/conf/user/var/backups/skel/.local/share/code-server/User/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "editor.tabSize": 2, 3 | "gitlab.aiAssistedCodeSuggestions.enabled": false, 4 | "gitlab.duo.enabledWithoutGitlabProject": false, 5 | "gitlab.duoChat.enabled": false, 6 | "gitlens.graph.statusBar.enabled": false, 7 | "gitlens.menus": { 8 | "scm": { 9 | "graph": false 10 | }, 11 | "scmRepositoryInline": { 12 | "graph": false 13 | }, 14 | "scmRepository": { 15 | "graph": false 16 | } 17 | }, 18 | "gitlens.showWelcomeOnInstall": false, 19 | "gitlens.showWhatsNewAfterUpgrades": false, 20 | "python.languageServer": "Jedi", 21 | "r.bracketedPaste": true, 22 | "r.plot.useHttpgd": true, 23 | "r.rterm.linux": "/usr/local/bin/radian", 24 | "r.rterm.option": [ 25 | "--no-save", 26 | "--no-restore" 27 | ], 28 | "r.workspaceViewer.showObjectSize": true, 29 | "resmon.show.battery": false, 30 | "resmon.show.cpufreq": false, 31 | "telemetry.telemetryLevel": "off", 32 | "terminal.integrated.fontFamily": "MesloLGS NF", 33 | "workbench.colorTheme": "Default Dark+" 34 | } 35 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/10-env.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2020 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | # Set defaults for environment variables in case they are undefined 8 | LANG=${LANG:=en_US.UTF-8} 9 | TZ=${TZ:=Etc/UTC} 10 | 11 | # Info about timezone 12 | _log "TZ is set to $TZ (/etc/localtime and /etc/timezone remain unchanged)" 13 | 14 | if [ "$(id -u)" == 0 ] ; then 15 | # Add/Update locale if requested 16 | if [ -n "$LANGS" ]; then 17 | for i in $LANGS; do 18 | sed -i "s/# $i/$i/g" /etc/locale.gen 19 | done 20 | fi 21 | if [ "$LANG" != "en_US.UTF-8" ]; then 22 | sed -i "s/# $LANG/$LANG/g" /etc/locale.gen 23 | fi 24 | if [[ "$LANG" != "en_US.UTF-8" || -n "$LANGS" ]]; then 25 | locale-gen --keep-existing 26 | fi 27 | update-locale --reset LANG="$LANG" 28 | # Info about locale 29 | _log "LANG is set to $LANG" 30 | else 31 | # Warn if the user wants to add locales but hasn't started the container as 32 | # root. 33 | if [ -n "$LANGS" ]; then 34 | _log "WARNING: Container must be started as root to add locale(s)!" 35 | fi 36 | # Warn if the user wants to change to a locale that is not available. 37 | if ! grep -v '^#' < /etc/locale.gen | grep -q "$LANG"; then 38 | _log "WARNING: Locale $LANG is not available!" 39 | . /etc/default/locale 40 | _log "WARNING: Resetting LANG to $LANG" 41 | else 42 | # Info about locale 43 | _log "LANG is set to $LANG" 44 | fi 45 | fi 46 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/11-home.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2020 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ "$(id -u)" == 0 ] ; then 8 | # Create user's projects and workspaces folder 9 | run_user_group mkdir -p "/home/$NB_USER${DOMAIN:+@$DOMAIN}/projects" 10 | run_user_group mkdir -p "/home/$NB_USER${DOMAIN:+@$DOMAIN}/workspaces" 11 | 12 | # Remove old .zcompdump files 13 | rm -f "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.zcompdump"* 14 | else 15 | # Create user's projects and workspaces folder 16 | mkdir -p "$HOME/projects" 17 | mkdir -p "$HOME/workspaces" 18 | 19 | # Remove old .zcompdump files 20 | rm -f "$HOME/.zcompdump"* 21 | fi 22 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/12-r.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2020 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ "$(id -u)" == 0 ] ; then 8 | if [ "${NB_USER}" = "root" ] && [ "${NB_UID}" = "$(id -u "${NB_USER}")" ] && [ "${NB_GID}" = "$(id -g "${NB_USER}")" ]; then 9 | HOME="/home/root" 10 | fi 11 | # Create user's R package library 12 | RLU=$(run_user_group Rscript -e "cat(Sys.getenv('R_LIBS_USER'))") 13 | run_user_group mkdir -p "$RLU" 14 | else 15 | # Create user's R package library 16 | RLU=$(Rscript -e "cat(Sys.getenv('R_LIBS_USER'))") 17 | mkdir -p "$RLU" 18 | fi 19 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/13-update-cran.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2024 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | CRAN_ORIG=$(sed -n "s/.*CRAN='\(.*\)'),.*$/\1/p" "$(R RHOME)/etc/Rprofile.site") 8 | CRAN_ORIG_P3M=${CRAN_ORIG//packagemanager.posit.co/p3m.dev} 9 | 10 | # Update CRAN mirror 11 | if [[ "$CRAN" != "$CRAN_ORIG" ]]; then 12 | _log "Setting CRAN mirror to $CRAN" 13 | sed -i "s|$CRAN_ORIG|$CRAN|g" "$(R RHOME)/etc/Rprofile.site" 14 | fi 15 | 16 | # Use binary packages 17 | if [[ "$R_BINARY_PACKAGES" == "1" || "$R_BINARY_PACKAGES" == "yes" ]]; then 18 | if [[ "$CRAN" == "$CRAN_ORIG" || "$CRAN" == "$CRAN_ORIG_P3M" ]]; then 19 | . /etc/os-release 20 | # Update environment variable CRAN 21 | _log "Updating CRAN mirror:" 22 | _log "- from: $CRAN" 23 | CRAN=${CRAN//cran/"cran/__linux__/$VERSION_CODENAME"} 24 | export CRAN 25 | # Set options repos and HTTPUserAgent in Rprofile.site 26 | sed -i "s|cran|cran/__linux__/$VERSION_CODENAME|g" \ 27 | "$(R RHOME)/etc/Rprofile.site" 28 | echo '# https://docs.rstudio.com/rspm/admin/serving-binaries/#binaries-r-configuration-linux' \ 29 | >> "$(R RHOME)/etc/Rprofile.site" 30 | echo 'options(HTTPUserAgent = sprintf("R/%s R (%s)", getRversion(), paste(getRversion(), R.version["platform"], R.version["arch"], R.version["os"])))' \ 31 | >> "$(R RHOME)/etc/Rprofile.site" 32 | _log "- to: $CRAN" 33 | else 34 | _log "WARNING: Use $CRAN_ORIG for switching to binary packages!" 35 | fi 36 | fi 37 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/30-code-server.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2020 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ "$(id -u)" == 0 ] ; then 8 | CS_USD="/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/code-server/User" 9 | # Install code-server settings 10 | run_user_group mkdir -p "$CS_USD" 11 | if [[ ! -f "$CS_USD/settings.json" ]]; then 12 | run_user_group cp -a --no-preserve=ownership \ 13 | /var/backups/skel/.local/share/code-server/User/settings.json \ 14 | "$CS_USD/settings.json" 15 | fi 16 | # Update code-server settings 17 | run_user_group mv "$CS_USD/settings.json" "$CS_USD/settings.json.bak" 18 | run_user_group sed -i ':a;N;$!ba;s/,\n\}/\n}/g' "$CS_USD/settings.json.bak" 19 | if [[ $(jq . "$CS_USD/settings.json.bak" 2> /dev/null) ]]; then 20 | run_user_group jq -s '.[0] * .[1]' \ 21 | /var/backups/skel/.local/share/code-server/User/settings.json \ 22 | "$CS_USD/settings.json.bak" | run_user_group tee \ 23 | "$CS_USD/settings.json" > /dev/null 24 | else 25 | run_user_group mv "$CS_USD/settings.json.bak" "$CS_USD/settings.json" 26 | fi 27 | else 28 | CS_USD="$HOME/.local/share/code-server/User" 29 | # Install code-server settings 30 | mkdir -p "$CS_USD" 31 | if [[ ! -f "$CS_USD/settings.json" ]]; then 32 | cp -a /var/backups/skel/.local/share/code-server/User/settings.json \ 33 | "$CS_USD/settings.json" 34 | fi 35 | # Update code-server settings 36 | mv "$CS_USD/settings.json" "$CS_USD/settings.json.bak" 37 | sed -i ':a;N;$!ba;s/,\n\}/\n}/g' "$CS_USD/settings.json.bak" 38 | if [[ $(jq . "$CS_USD/settings.json.bak" 2> /dev/null) ]]; then 39 | jq -s '.[0] * .[1]' \ 40 | /var/backups/skel/.local/share/code-server/User/settings.json \ 41 | "$CS_USD/settings.json.bak" | tee \ 42 | "$CS_USD/settings.json" > /dev/null 43 | else 44 | mv "$CS_USD/settings.json.bak" "$CS_USD/settings.json" 45 | fi 46 | fi 47 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/50-rstudio.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2024 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | # Set environment variables in Renviron.site 8 | exclude_vars="HOME LD_LIBRARY_PATH OLDPWD PATH PWD RSTUDIO_VERSION SHLVL" 9 | for var in $(compgen -e); do 10 | [[ ! $exclude_vars =~ $var ]] && echo "$var=${!var}" \ 11 | >> "$(R RHOME)/etc/Renviron.site" 12 | done 13 | 14 | if [ "$(id -u)" == 0 ]; then 15 | RS_USD="/home/$NB_USER${DOMAIN:+@$DOMAIN}/.config/rstudio" 16 | # Install RStudio settings 17 | run_user_group mkdir -p "$RS_USD" 18 | if [[ ! -f "$RS_USD/rstudio-prefs.json" ]]; then 19 | run_user_group cp -a --no-preserve=ownership \ 20 | /var/backups/skel/.config/rstudio/rstudio-prefs.json \ 21 | "$RS_USD/rstudio-prefs.json" 22 | fi 23 | # Create user's working folder 24 | run_user_group mkdir -p "/home/$NB_USER${DOMAIN:+@$DOMAIN}/working" 25 | else 26 | RS_USD="$HOME/.config/rstudio" 27 | # Install RStudio settings 28 | mkdir -p "$RS_USD" 29 | if [[ ! -f "$RS_USD/rstudio-prefs.json" ]]; then 30 | cp -a /var/backups/skel/.config/rstudio/rstudio-prefs.json \ 31 | "$RS_USD/rstudio-prefs.json" 32 | fi 33 | # Create user's working folder 34 | mkdir -p "$HOME/working" 35 | fi 36 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/71-tensorboard.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) Jupyter Development Team. 3 | # Distributed under the terms of the Modified BSD License. 4 | 5 | set -e 6 | 7 | # Initialize the TENSORBOARD_PROXY_URL with the appropriate path 8 | # to use jupyter-server-proxy. 9 | 10 | export TENSORBOARD_PROXY_URL="${JUPYTERHUB_SERVICE_PREFIX:-/}proxy/%PORT%/" 11 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/90-limits.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2023 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ "$(id -u)" != 0 ]; then 8 | soft_limit=1 9 | fi 10 | 11 | if [[ "$SWAP_ENABLE" == "1" || "$SWAP_ENABLE" == "yes" ]]; then 12 | factor=$(echo 1 "${SWAP_FACTOR:-1}" | awk '{ printf "%.1f", $1 + $2 }') 13 | else 14 | factor=1 15 | fi 16 | 17 | # Limit address space: Soft when run as root and as other user 18 | if [ -n "$MEM_LIMIT" ]; then 19 | NO_AS_LIMIT=${NO_AS_LIMIT:-$NO_MEM_LIMIT} 20 | # Do not limit if NO_AS_LIMIT or NO_MEM_LIMIT is set to 1 or yes 21 | if [[ "$NO_AS_LIMIT" != "1" && "$NO_AS_LIMIT" != "yes" ]]; then 22 | prlimit --pid $$ --as="$(echo "$MEM_LIMIT" "$factor" | 23 | awk '{ printf "%.0f", $1 * $2 }')": 24 | fi 25 | fi 26 | 27 | # Other limits: Hard when run as root user; Soft when run as other user 28 | # pending signals 29 | if [ -n "$SIGPEN_LIMIT" ]; then 30 | prlimit --pid $$ --sigpending="$(printf %.0f "$SIGPEN_LIMIT")"${soft_limit:+:} 31 | fi 32 | 33 | # file descriptors 34 | if [ -n "$NOFILE_LIMIT" ]; then 35 | prlimit --pid $$ --nofile="$(printf %.0f "$NOFILE_LIMIT")"${soft_limit:+:} 36 | fi 37 | 38 | # processes 39 | if [ -n "$NPROC_LIMIT" ]; then 40 | prlimit --pid $$ --nproc="$(printf %.0f "$NPROC_LIMIT")"${soft_limit:+:} 41 | fi 42 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/before-notebook.d/95-misc.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2024 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | # Export environment variables to /tmp/environment 8 | exclude_vars="HOME OLDPWD PWD SHLVL" 9 | for var in $(compgen -e); do 10 | [[ ! $exclude_vars =~ $var ]] && echo "$var=${!var}" \ 11 | >> "/tmp/environment" 12 | done 13 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/busy: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2022 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | while [ -n "$JUPYTERHUB_API_TOKEN" ]; do 6 | t=$(date -Iseconds) 7 | curl -s \ 8 | "$JUPYTERHUB_ACTIVITY_URL" -H \ 9 | "Authorization: token $JUPYTERHUB_API_TOKEN" -d \ 10 | "{\"servers\":{\"$JUPYTERHUB_SERVER_NAME\":{\"last_activity\":\"$t\"}},\"last_activity\":\"$t\"}" \ 11 | > /dev/null 2>&1 12 | sleep 300 13 | done 14 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/python-kernel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2024 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | # Get SHELL and run commands 6 | SHELL="$(readlink /proc/$$/exe)" 7 | . "$HOME/.$(basename "$SHELL")rc" 8 | 9 | # Set PATH so it includes user's private bin if it exists 10 | if [ -d "$HOME/bin" ] && [[ "$PATH" != *"$HOME/bin"* ]] ; then 11 | PATH="$HOME/bin:$PATH" 12 | fi 13 | if [ -d "$HOME/.local/bin" ] && [[ "$PATH" != *"$HOME/.local/bin"* ]] ; then 14 | PATH="$HOME/.local/bin:$PATH" 15 | fi 16 | 17 | # Set Python to start kernel with 18 | KERNEL_PYTHON_EXE="$(command -v python)" 19 | KERNEL_PYTHON_EXE="${KERNEL_PYTHON_EXE:-$(command -v python3)}" 20 | 21 | # Activate environment if set 22 | if [ -n "$__conda_env" ]; then 23 | if [ -z "$CONDA_DEFAULT_ENV" ]; then 24 | eval CONDA_DIR="${CONDA_DIR:-$HOME/miniconda3}" 25 | eval "$("$CONDA_DIR/bin/conda" shell."$(basename "$SHELL")" hook)" 26 | fi 27 | if [ "$(basename "$__conda_env")" != "$(basename "$CONDA_PREFIX")" ]; then 28 | conda activate "$(basename "$__conda_env")" 29 | fi 30 | unset __conda_env 31 | elif [ -n "$__virtual_env" ]; then 32 | if [ "$__virtual_env" != "$VIRTUAL_ENV" ]; then 33 | eval __virtual_env="$__virtual_env" 34 | . "$__virtual_env/bin/activate" 35 | fi 36 | unset __virtual_env 37 | fi 38 | 39 | export SHELL 40 | 41 | # Start Python kernel 42 | exec "$KERNEL_PYTHON_EXE" -m ipykernel_launcher "$@" 43 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/run-hooks.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) Jupyter Development Team. 3 | # Distributed under the terms of the Modified BSD License. 4 | 5 | # The run-hooks.sh script looks for *.sh scripts to source 6 | # and executable files to run within a passed directory 7 | 8 | if [ "$#" -ne 1 ]; then 9 | echo "Should pass exactly one directory" 10 | return 1 11 | fi 12 | 13 | if [[ ! -d "${1}" ]]; then 14 | echo "Directory ${1} doesn't exist or is not a directory" 15 | return 1 16 | fi 17 | 18 | echo "Running hooks in: ${1} as uid: $(id -u) gid: $(id -g)" 19 | for f in "${1}/"*; do 20 | # Handling a case when the directory is empty 21 | [ -e "${f}" ] || continue 22 | case "${f}" in 23 | *.sh) 24 | echo "Sourcing shell script: ${f}" 25 | # shellcheck disable=SC1090 26 | source "${f}" 27 | # shellcheck disable=SC2181 28 | if [ $? -ne 0 ]; then 29 | echo "${f} has failed, continuing execution" 30 | fi 31 | ;; 32 | *) 33 | if [ -x "${f}" ]; then 34 | echo "Running executable: ${f}" 35 | "${f}" 36 | # shellcheck disable=SC2181 37 | if [ $? -ne 0 ]; then 38 | echo "${f} has failed, continuing execution" 39 | fi 40 | else 41 | echo "Ignoring non-executable: ${f}" 42 | fi 43 | ;; 44 | esac 45 | done 46 | echo "Done running hooks in: ${1}" 47 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/start-notebook.d/10-populate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2020 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ ! -f /home/jovyan/.populated ]; then 8 | # Create list of missing files (top level only) 9 | fd="$(comm -13 <(cd /home/jovyan; ls -A) <(cd /var/backups/skel; ls -A) \ 10 | | paste -sd ',' -)" 11 | # Handle case when only marker is missing 12 | if [[ "${fd}" == ".populated" ]]; then 13 | sf="${fd}" 14 | else 15 | sf="{${fd}}" 16 | fi 17 | _log "Populating home dir: /home/jovyan" 18 | _log "Copying files/directories (recursively):" 19 | _log "- ${fd}" 20 | if eval "cp -a /var/backups/skel/${sf} /home/jovyan"; then 21 | date -uIseconds > /home/jovyan/.populated 22 | _log "Done populating home dir" 23 | else 24 | _log "ERROR: Failed to copy data from /var/backups/skel to /home/jovyan!" 25 | exit 1 26 | fi 27 | fi 28 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/start-notebook.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) Jupyter Development Team. 3 | # Distributed under the terms of the Modified BSD License. 4 | 5 | set -e 6 | 7 | # The Jupyter command to launch 8 | # JupyterLab by default 9 | DOCKER_STACKS_JUPYTER_CMD="${DOCKER_STACKS_JUPYTER_CMD:=lab}" 10 | 11 | if [[ -n "${JUPYTERHUB_API_TOKEN}" ]]; then 12 | echo "WARNING: using start-singleuser.sh instead of start-notebook.sh to start a server associated with JupyterHub." 13 | exec /usr/local/bin/start-singleuser.sh "$@" 14 | fi 15 | 16 | wrapper="" 17 | if [[ "${RESTARTABLE}" == "yes" ]]; then 18 | wrapper="run-one-constantly" 19 | fi 20 | 21 | echo "Executing:" ${wrapper} "jupyter" "${DOCKER_STACKS_JUPYTER_CMD}" "${NOTEBOOK_ARGS}" "$@" 22 | # shellcheck disable=SC1091,SC2086 23 | exec ${wrapper} jupyter ${DOCKER_STACKS_JUPYTER_CMD} ${NOTEBOOK_ARGS} "$@" 24 | -------------------------------------------------------------------------------- /base/scripts/usr/local/bin/start-singleuser.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) Jupyter Development Team. 3 | # Distributed under the terms of the Modified BSD License. 4 | 5 | set -e 6 | 7 | # JupyterHub singleuser arguments are set using environment variables 8 | 9 | echo "Executing: jupyterhub-singleuser" "${NOTEBOOK_ARGS}" "$@" 10 | # shellcheck disable=SC1091,SC2086 11 | exec jupyterhub-singleuser ${NOTEBOOK_ARGS} "$@" 12 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.2.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=bullseye 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.2.2 5 | 6 | ARG NODE_VERSION=16.19.1 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libsecret-1-dev \ 38 | libx11-dev \ 39 | libxkbfile-dev \ 40 | libxt6 \ 41 | quilt \ 42 | rsync \ 43 | && if [ ! -z "$PYTHON_VERSION" ]; then \ 44 | ## make some useful symlinks that are expected to exist 45 | ## ("/usr/bin/python" and friends) 46 | for src in pydoc3 python3; do \ 47 | dst="$(echo "$src" | tr -d 3)"; \ 48 | [ -s "/usr/bin/$src" ]; \ 49 | [ ! -e "/usr/bin/$dst" ]; \ 50 | ln -svT "$src" "/usr/bin/$dst"; \ 51 | done; \ 52 | fi \ 53 | ## Clean up Node.js installation 54 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 55 | && bash -c 'rm -f /usr/local/{CHANGELOG.md,LICENSE,README.md}' \ 56 | ## Enable corepack (Yarn, pnpm) 57 | && corepack enable \ 58 | ## Install nFPM 59 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 60 | | tee /etc/apt/sources.list.d/goreleaser.list \ 61 | && apt-get update \ 62 | && apt-get install -y --no-install-recommends nfpm \ 63 | ## Install code-server extensions 64 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension dbaeumer.vscode-eslint \ 65 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension esbenp.prettier-vscode \ 66 | ## Clean up 67 | && rm -rf /tmp/* \ 68 | && rm -rf /var/lib/apt/lists/* \ 69 | /root/.config \ 70 | /root/.local 71 | 72 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 73 | USER ${NB_USER} 74 | 75 | ENV HOME=/home/${NB_USER} 76 | 77 | WORKDIR ${HOME} 78 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.2.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=bullseye 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.2.3 5 | 6 | ARG NODE_VERSION=16.20.0 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libsecret-1-dev \ 38 | libx11-dev \ 39 | libxkbfile-dev \ 40 | libxt6 \ 41 | quilt \ 42 | rsync \ 43 | && if [ ! -z "$PYTHON_VERSION" ]; then \ 44 | ## make some useful symlinks that are expected to exist 45 | ## ("/usr/bin/python" and friends) 46 | for src in pydoc3 python3; do \ 47 | dst="$(echo "$src" | tr -d 3)"; \ 48 | [ -s "/usr/bin/$src" ]; \ 49 | [ ! -e "/usr/bin/$dst" ]; \ 50 | ln -svT "$src" "/usr/bin/$dst"; \ 51 | done; \ 52 | fi \ 53 | ## Clean up Node.js installation 54 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 55 | && bash -c 'rm -f /usr/local/{CHANGELOG.md,LICENSE,README.md}' \ 56 | ## Enable corepack (Yarn, pnpm) 57 | && corepack enable \ 58 | ## Install nFPM 59 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 60 | | tee /etc/apt/sources.list.d/goreleaser.list \ 61 | && apt-get update \ 62 | && apt-get install -y --no-install-recommends nfpm \ 63 | ## Install code-server extensions 64 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension dbaeumer.vscode-eslint \ 65 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension esbenp.prettier-vscode \ 66 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension ms-python.black-formatter \ 67 | ## Clean up 68 | && rm -rf /tmp/* \ 69 | && rm -rf /var/lib/apt/lists/* \ 70 | /root/.config \ 71 | /root/.local 72 | 73 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 74 | USER ${NB_USER} 75 | 76 | ENV HOME=/home/${NB_USER} 77 | 78 | WORKDIR ${HOME} 79 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.3.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.3.0 5 | 6 | ARG NODE_VERSION=16.20.0 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libsecret-1-dev \ 38 | libx11-dev \ 39 | libxkbfile-dev \ 40 | libxt6 \ 41 | quilt \ 42 | rsync \ 43 | && if [ ! -z "$PYTHON_VERSION" ]; then \ 44 | ## make some useful symlinks that are expected to exist 45 | ## ("/usr/bin/python" and friends) 46 | for src in pydoc3 python3; do \ 47 | dst="$(echo "$src" | tr -d 3)"; \ 48 | [ -s "/usr/bin/$src" ]; \ 49 | [ ! -e "/usr/bin/$dst" ]; \ 50 | ln -svT "$src" "/usr/bin/$dst"; \ 51 | done; \ 52 | fi \ 53 | ## Clean up Node.js installation 54 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 55 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 56 | /usr/local/share/doc/node' \ 57 | ## Enable corepack (Yarn, pnpm) 58 | && corepack enable \ 59 | ## Install nFPM 60 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 61 | | tee /etc/apt/sources.list.d/goreleaser.list \ 62 | && apt-get update \ 63 | && apt-get install -y --no-install-recommends nfpm \ 64 | ## Install code-server extensions 65 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension dbaeumer.vscode-eslint \ 66 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension esbenp.prettier-vscode \ 67 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension ms-python.black-formatter \ 68 | ## Clean up 69 | && rm -rf /tmp/* \ 70 | && rm -rf /var/lib/apt/lists/* \ 71 | ${HOME}/.config \ 72 | ${HOME}/.local 73 | 74 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 75 | USER ${NB_USER} 76 | 77 | ENV HOME=/home/${NB_USER} 78 | 79 | WORKDIR ${HOME} 80 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.3.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.3.1 5 | 6 | ARG NODE_VERSION=18.18.2 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libkrb5-dev \ 38 | libsecret-1-dev \ 39 | libx11-dev \ 40 | libxkbfile-dev \ 41 | libxt6 \ 42 | quilt \ 43 | rsync \ 44 | && if [ -n "$PYTHON_VERSION" ]; then \ 45 | ## make some useful symlinks that are expected to exist 46 | ## ("/usr/bin/python" and friends) 47 | for src in pydoc3 python3; do \ 48 | dst="$(echo "$src" | tr -d 3)"; \ 49 | [ -s "/usr/bin/$src" ]; \ 50 | [ ! -e "/usr/bin/$dst" ]; \ 51 | ln -svT "$src" "/usr/bin/$dst"; \ 52 | done; \ 53 | fi \ 54 | ## Clean up Node.js installation 55 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 56 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 57 | /usr/local/share/doc/node' \ 58 | ## Enable corepack (Yarn, pnpm) 59 | && corepack enable \ 60 | ## Install nFPM 61 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 62 | | tee /etc/apt/sources.list.d/goreleaser.list \ 63 | && apt-get update \ 64 | && apt-get install -y --no-install-recommends nfpm \ 65 | ## Install code-server extensions 66 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 67 | --install-extension dbaeumer.vscode-eslint \ 68 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 69 | --install-extension esbenp.prettier-vscode \ 70 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 71 | --install-extension ms-python.black-formatter \ 72 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 73 | --install-extension timonwong.shellcheck \ 74 | ## Enable shellcheck system-wide 75 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 76 | /usr/local/bin/shellcheck \ 77 | ## Clean up 78 | && rm -rf /tmp/* \ 79 | && rm -rf /var/lib/apt/lists/* \ 80 | "$HOME/.config" \ 81 | "$HOME/.local" 82 | 83 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 84 | USER ${NB_USER} 85 | 86 | ENV HOME=/home/${NB_USER} 87 | 88 | WORKDIR ${HOME} 89 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.3.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.3.2 5 | 6 | ARG NODE_VERSION=18.19.1 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libkrb5-dev \ 38 | libsecret-1-dev \ 39 | libx11-dev \ 40 | libxkbfile-dev \ 41 | libxt6 \ 42 | quilt \ 43 | rsync \ 44 | && if [ -n "$PYTHON_VERSION" ]; then \ 45 | ## make some useful symlinks that are expected to exist 46 | ## ("/usr/bin/python" and friends) 47 | for src in pydoc3 python3 python3-config; do \ 48 | dst="$(echo "$src" | tr -d 3)"; \ 49 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 50 | ln -svT "$src" "/usr/bin/$dst"; \ 51 | fi \ 52 | done; \ 53 | fi \ 54 | ## Clean up Node.js installation 55 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 56 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 57 | /usr/local/share/doc/node' \ 58 | ## Enable corepack (Yarn, pnpm) 59 | && corepack enable \ 60 | ## Install nFPM 61 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 62 | | tee /etc/apt/sources.list.d/goreleaser.list \ 63 | && apt-get update \ 64 | && apt-get install -y --no-install-recommends nfpm \ 65 | ## Install code-server extensions 66 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 67 | --install-extension dbaeumer.vscode-eslint \ 68 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 69 | --install-extension esbenp.prettier-vscode \ 70 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 71 | --install-extension ms-python.black-formatter \ 72 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 73 | --install-extension timonwong.shellcheck \ 74 | ## Enable shellcheck system-wide 75 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 76 | /usr/local/bin/shellcheck \ 77 | ## Clean up 78 | && rm -rf /tmp/* \ 79 | && rm -rf /var/lib/apt/lists/* \ 80 | "$HOME/.config" \ 81 | "$HOME/.local" 82 | 83 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 84 | USER ${NB_USER} 85 | 86 | ENV HOME=/home/${NB_USER} 87 | 88 | WORKDIR ${HOME} 89 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.3.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.3.3 5 | 6 | ARG NODE_VERSION=18.19.1 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Install Node.js 26 | COPY --from=nsi /usr/local /usr/local 27 | 28 | USER root 29 | 30 | ENV HOME=/root 31 | 32 | WORKDIR ${HOME} 33 | 34 | RUN apt-get update \ 35 | && apt-get install -y --no-install-recommends \ 36 | bats \ 37 | libkrb5-dev \ 38 | libsecret-1-dev \ 39 | libx11-dev \ 40 | libxkbfile-dev \ 41 | libxt6 \ 42 | quilt \ 43 | rsync \ 44 | && if [ -n "$PYTHON_VERSION" ]; then \ 45 | ## make some useful symlinks that are expected to exist 46 | ## ("/usr/bin/python" and friends) 47 | for src in pydoc3 python3 python3-config; do \ 48 | dst="$(echo "$src" | tr -d 3)"; \ 49 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 50 | ln -svT "$src" "/usr/bin/$dst"; \ 51 | fi \ 52 | done; \ 53 | fi \ 54 | ## Clean up Node.js installation 55 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 56 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 57 | /usr/local/share/doc/node' \ 58 | ## Enable corepack (Yarn, pnpm) 59 | && corepack enable \ 60 | ## Install nFPM 61 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 62 | | tee /etc/apt/sources.list.d/goreleaser.list \ 63 | && apt-get update \ 64 | && apt-get install -y --no-install-recommends nfpm \ 65 | ## Install code-server extensions 66 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 67 | --install-extension dbaeumer.vscode-eslint \ 68 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 69 | --install-extension esbenp.prettier-vscode \ 70 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 71 | --install-extension ms-python.black-formatter \ 72 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 73 | --install-extension timonwong.shellcheck \ 74 | ## Enable shellcheck system-wide 75 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 76 | /usr/local/bin/shellcheck \ 77 | ## Clean up 78 | && rm -rf /tmp/* \ 79 | && rm -rf /var/lib/apt/lists/* \ 80 | "$HOME/.config" \ 81 | "$HOME/.local" 82 | 83 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 84 | USER ${NB_USER} 85 | 86 | ENV HOME=/home/${NB_USER} 87 | 88 | WORKDIR ${HOME} 89 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.4.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.4.0 5 | 6 | ARG NODE_VERSION=20.14.0 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Prevent Corepack showing the URL when it needs to download software 26 | ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 27 | 28 | ## Install Node.js 29 | COPY --from=nsi /usr/local /usr/local 30 | 31 | USER root 32 | 33 | ENV HOME=/root 34 | 35 | WORKDIR ${HOME} 36 | 37 | RUN apt-get update \ 38 | && apt-get install -y --no-install-recommends \ 39 | bats \ 40 | libkrb5-dev \ 41 | libsecret-1-dev \ 42 | libx11-dev \ 43 | libxkbfile-dev \ 44 | libxt6 \ 45 | quilt \ 46 | rsync \ 47 | && if [ -n "$PYTHON_VERSION" ]; then \ 48 | ## make some useful symlinks that are expected to exist 49 | ## ("/usr/bin/python" and friends) 50 | for src in pydoc3 python3 python3-config; do \ 51 | dst="$(echo "$src" | tr -d 3)"; \ 52 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 53 | ln -svT "$src" "/usr/bin/$dst"; \ 54 | fi \ 55 | done; \ 56 | fi \ 57 | ## Clean up Node.js installation 58 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 59 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 60 | /usr/local/share/doc/node' \ 61 | ## Enable corepack (Yarn, pnpm) 62 | && corepack enable \ 63 | ## Install nFPM 64 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 65 | | tee /etc/apt/sources.list.d/goreleaser.list \ 66 | && apt-get update \ 67 | && apt-get install -y --no-install-recommends nfpm \ 68 | ## Install code-server extensions 69 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 70 | --install-extension dbaeumer.vscode-eslint \ 71 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 72 | --install-extension esbenp.prettier-vscode \ 73 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 74 | --install-extension ms-python.black-formatter \ 75 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 76 | --install-extension timonwong.shellcheck \ 77 | ## Enable shellcheck system-wide 78 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 79 | /usr/local/bin/shellcheck \ 80 | ## Clean up 81 | && rm -rf /tmp/* \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | "$HOME/.config" \ 84 | "$HOME/.local" 85 | 86 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 87 | USER ${NB_USER} 88 | 89 | ENV HOME=/home/${NB_USER} 90 | 91 | WORKDIR ${HOME} 92 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.4.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.4.1 5 | 6 | ARG NODE_VERSION=20.18.0 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Prevent Corepack showing the URL when it needs to download software 26 | ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 27 | 28 | ## Install Node.js 29 | COPY --from=nsi /usr/local /usr/local 30 | 31 | USER root 32 | 33 | ENV HOME=/root 34 | 35 | WORKDIR ${HOME} 36 | 37 | RUN apt-get update \ 38 | && apt-get install -y --no-install-recommends \ 39 | bats \ 40 | libkrb5-dev \ 41 | libsecret-1-dev \ 42 | libx11-dev \ 43 | libxkbfile-dev \ 44 | libxt6 \ 45 | quilt \ 46 | rsync \ 47 | && if [ -n "$PYTHON_VERSION" ]; then \ 48 | ## make some useful symlinks that are expected to exist 49 | ## ("/usr/bin/python" and friends) 50 | for src in pydoc3 python3 python3-config; do \ 51 | dst="$(echo "$src" | tr -d 3)"; \ 52 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 53 | ln -svT "$src" "/usr/bin/$dst"; \ 54 | fi \ 55 | done; \ 56 | fi \ 57 | ## Clean up Node.js installation 58 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 59 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 60 | /usr/local/share/doc/node' \ 61 | ## Enable corepack (Yarn, pnpm) 62 | && corepack enable \ 63 | ## Install nFPM 64 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 65 | | tee /etc/apt/sources.list.d/goreleaser.list \ 66 | && apt-get update \ 67 | && apt-get install -y --no-install-recommends nfpm \ 68 | ## Install code-server extensions 69 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 70 | --install-extension dbaeumer.vscode-eslint \ 71 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 72 | --install-extension esbenp.prettier-vscode \ 73 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 74 | --install-extension ms-python.black-formatter \ 75 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 76 | --install-extension timonwong.shellcheck \ 77 | ## Enable shellcheck system-wide 78 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 79 | /usr/local/bin/shellcheck \ 80 | ## Clean up 81 | && rm -rf /tmp/* \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | "$HOME/.config" \ 84 | "$HOME/.local" 85 | 86 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 87 | USER ${NB_USER} 88 | 89 | ENV HOME=/home/${NB_USER} 90 | 91 | WORKDIR ${HOME} 92 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.4.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.4.2 5 | 6 | ARG NODE_VERSION=20.18.1 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Prevent Corepack showing the URL when it needs to download software 26 | ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 27 | 28 | ## Install Node.js 29 | COPY --from=nsi /usr/local /usr/local 30 | 31 | USER root 32 | 33 | ENV HOME=/root 34 | 35 | WORKDIR ${HOME} 36 | 37 | RUN apt-get update \ 38 | && apt-get install -y --no-install-recommends \ 39 | bats \ 40 | libkrb5-dev \ 41 | libsecret-1-dev \ 42 | libx11-dev \ 43 | libxkbfile-dev \ 44 | libxt6 \ 45 | quilt \ 46 | rsync \ 47 | && if [ -n "$PYTHON_VERSION" ]; then \ 48 | ## make some useful symlinks that are expected to exist 49 | ## ("/usr/bin/python" and friends) 50 | for src in pydoc3 python3 python3-config; do \ 51 | dst="$(echo "$src" | tr -d 3)"; \ 52 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 53 | ln -svT "$src" "/usr/bin/$dst"; \ 54 | fi \ 55 | done; \ 56 | fi \ 57 | ## Clean up Node.js installation 58 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 59 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 60 | /usr/local/share/doc/node' \ 61 | ## Enable corepack (Yarn, pnpm) 62 | && corepack enable \ 63 | ## Install nFPM 64 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 65 | | tee /etc/apt/sources.list.d/goreleaser.list \ 66 | && apt-get update \ 67 | && apt-get install -y --no-install-recommends nfpm \ 68 | ## Install code-server extensions 69 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 70 | --install-extension dbaeumer.vscode-eslint \ 71 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 72 | --install-extension esbenp.prettier-vscode \ 73 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 74 | --install-extension ms-python.black-formatter \ 75 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 76 | --install-extension timonwong.shellcheck \ 77 | ## Enable shellcheck system-wide 78 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 79 | /usr/local/bin/shellcheck \ 80 | ## Clean up 81 | && rm -rf /tmp/* \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | "$HOME/.config" \ 84 | "$HOME/.local" 85 | 86 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 87 | USER ${NB_USER} 88 | 89 | ENV HOME=/home/${NB_USER} 90 | 91 | WORKDIR ${HOME} 92 | -------------------------------------------------------------------------------- /common/subtags/devtools/4.4.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION=4.4.3 5 | 6 | ARG NODE_VERSION=20.18.3 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Prevent Corepack showing the URL when it needs to download software 26 | ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 27 | 28 | ## Install Node.js 29 | COPY --from=nsi /usr/local /usr/local 30 | 31 | USER root 32 | 33 | ENV HOME=/root 34 | 35 | WORKDIR ${HOME} 36 | 37 | RUN apt-get update \ 38 | && apt-get install -y --no-install-recommends \ 39 | bats \ 40 | libkrb5-dev \ 41 | libsecret-1-dev \ 42 | libx11-dev \ 43 | libxkbfile-dev \ 44 | libxt6 \ 45 | quilt \ 46 | rsync \ 47 | && if [ -n "$PYTHON_VERSION" ]; then \ 48 | ## make some useful symlinks that are expected to exist 49 | ## ("/usr/bin/python" and friends) 50 | for src in pydoc3 python3 python3-config; do \ 51 | dst="$(echo "$src" | tr -d 3)"; \ 52 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 53 | ln -svT "$src" "/usr/bin/$dst"; \ 54 | fi \ 55 | done; \ 56 | fi \ 57 | ## Clean up Node.js installation 58 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 59 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 60 | /usr/local/share/doc/node' \ 61 | ## Enable corepack (Yarn, pnpm) 62 | && corepack enable \ 63 | ## Install nFPM 64 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 65 | | tee /etc/apt/sources.list.d/goreleaser.list \ 66 | && apt-get update \ 67 | && apt-get install -y --no-install-recommends nfpm \ 68 | ## Install code-server extensions 69 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 70 | --install-extension dbaeumer.vscode-eslint \ 71 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 72 | --install-extension esbenp.prettier-vscode \ 73 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 74 | --install-extension ms-python.black-formatter \ 75 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 76 | --install-extension timonwong.shellcheck \ 77 | ## Enable shellcheck system-wide 78 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 79 | /usr/local/bin/shellcheck \ 80 | ## Clean up 81 | && rm -rf /tmp/* \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | "$HOME/.config" \ 84 | "$HOME/.local" 85 | 86 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 87 | USER ${NB_USER} 88 | 89 | ENV HOME=/home/${NB_USER} 90 | 91 | WORKDIR ${HOME} 92 | -------------------------------------------------------------------------------- /common/subtags/devtools/latest.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BASE_IMAGE=debian 2 | ARG BASE_IMAGE_TAG=12 3 | ARG BUILD_ON_IMAGE 4 | ARG R_VERSION 5 | 6 | ARG NODE_VERSION=20.19.0 7 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 8 | 9 | FROM glcr.b-data.ch/nodejs/nsi/${NODE_VERSION}/${BASE_IMAGE}:${BASE_IMAGE_TAG} AS nsi 10 | 11 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 12 | 13 | ARG DEBIAN_FRONTEND=noninteractive 14 | 15 | ARG BUILD_ON_IMAGE 16 | 17 | ARG NODE_VERSION 18 | ARG CODE_BUILTIN_EXTENSIONS_DIR 19 | ARG BUILD_START 20 | 21 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 22 | NODE_VERSION=${NODE_VERSION} \ 23 | BUILD_DATE=${BUILD_START} 24 | 25 | ## Prevent Corepack showing the URL when it needs to download software 26 | ENV COREPACK_ENABLE_DOWNLOAD_PROMPT=0 27 | 28 | ## Install Node.js 29 | COPY --from=nsi /usr/local /usr/local 30 | 31 | USER root 32 | 33 | ENV HOME=/root 34 | 35 | WORKDIR ${HOME} 36 | 37 | RUN apt-get update \ 38 | && apt-get install -y --no-install-recommends \ 39 | bats \ 40 | libkrb5-dev \ 41 | libsecret-1-dev \ 42 | libx11-dev \ 43 | libxkbfile-dev \ 44 | libxt6 \ 45 | quilt \ 46 | rsync \ 47 | && if [ -n "$PYTHON_VERSION" ]; then \ 48 | ## make some useful symlinks that are expected to exist 49 | ## ("/usr/bin/python" and friends) 50 | for src in pydoc3 python3 python3-config; do \ 51 | dst="$(echo "$src" | tr -d 3)"; \ 52 | if [ -s "/usr/bin/$src" ] && [ ! -e "/usr/bin/$dst" ]; then \ 53 | ln -svT "$src" "/usr/bin/$dst"; \ 54 | fi \ 55 | done; \ 56 | fi \ 57 | ## Clean up Node.js installation 58 | && bash -c 'rm -f /usr/local/bin/{docker-entrypoint.sh,yarn*}' \ 59 | && bash -c 'mv /usr/local/{CHANGELOG.md,LICENSE,README.md} \ 60 | /usr/local/share/doc/node' \ 61 | ## Enable corepack (Yarn, pnpm) 62 | && corepack enable \ 63 | ## Install nFPM 64 | && echo 'deb [trusted=yes] https://repo.goreleaser.com/apt/ /' \ 65 | | tee /etc/apt/sources.list.d/goreleaser.list \ 66 | && apt-get update \ 67 | && apt-get install -y --no-install-recommends nfpm \ 68 | ## Install code-server extensions 69 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 70 | --install-extension dbaeumer.vscode-eslint \ 71 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 72 | --install-extension esbenp.prettier-vscode \ 73 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 74 | --install-extension ms-python.black-formatter \ 75 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 76 | --install-extension timonwong.shellcheck \ 77 | ## Enable shellcheck system-wide 78 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 79 | /usr/local/bin/shellcheck \ 80 | ## Clean up 81 | && rm -rf /tmp/* \ 82 | && rm -rf /var/lib/apt/lists/* \ 83 | "$HOME/.config" \ 84 | "$HOME/.local" 85 | 86 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 87 | USER ${NB_USER} 88 | 89 | ENV HOME=/home/${NB_USER} 90 | 91 | WORKDIR ${HOME} 92 | -------------------------------------------------------------------------------- /common/subtags/docker/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE 2 | 3 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 4 | 5 | FROM ${BUILD_ON_IMAGE} 6 | 7 | ARG DEBIAN_FRONTEND=noninteractive 8 | 9 | ARG CODE_BUILTIN_EXTENSIONS_DIR 10 | ARG BUILD_START 11 | 12 | ENV BUILD_DATE=${BUILD_START} 13 | 14 | USER root 15 | 16 | ENV HOME=/root 17 | 18 | WORKDIR ${HOME} 19 | 20 | RUN dpkgArch="$(dpkg --print-architecture)" \ 21 | && . /etc/os-release \ 22 | && mkdir -p /etc/apt/keyrings \ 23 | && chmod 0755 /etc/apt/keyrings \ 24 | && pgpKey="$(curl -fsSL "https://download.docker.com/linux/$ID/gpg")" \ 25 | && echo "$pgpKey" | gpg --dearmor -o /etc/apt/keyrings/docker.gpg \ 26 | && echo "deb [arch=$dpkgArch signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/$ID $VERSION_CODENAME stable" | \ 27 | tee /etc/apt/sources.list.d/docker.list > /dev/null \ 28 | && apt-get update \ 29 | && apt-get -y install --no-install-recommends \ 30 | docker-ce-cli \ 31 | docker-buildx-plugin \ 32 | docker-compose-plugin \ 33 | "$(test "$dpkgArch" = "amd64" && echo docker-scan-plugin)" \ 34 | && ln -s /usr/libexec/docker/cli-plugins/docker-compose \ 35 | /usr/local/bin/docker-compose \ 36 | ## Install hadolint 37 | && case "$dpkgArch" in \ 38 | amd64) tarArch="x86_64" ;; \ 39 | arm64) tarArch="arm64" ;; \ 40 | *) echo "error: Architecture $dpkgArch unsupported"; exit 1 ;; \ 41 | esac \ 42 | && apiResponse="$(curl -sSL \ 43 | https://api.github.com/repos/hadolint/hadolint/releases/latest)" \ 44 | && downloadUrl="$(echo "$apiResponse" | grep \ 45 | "browser_download_url.*Linux-$tarArch\"" | cut -d : -f 2,3 | tr -d \")" \ 46 | && echo "$downloadUrl" | xargs curl -sSLo /usr/local/bin/hadolint \ 47 | && chmod 755 /usr/local/bin/hadolint \ 48 | ## Install code-server extensions 49 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 50 | --install-extension exiasr.hadolint \ 51 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 52 | --install-extension ms-azuretools.vscode-containers \ 53 | && code-server --extensions-dir "$CODE_BUILTIN_EXTENSIONS_DIR" \ 54 | --install-extension timonwong.shellcheck \ 55 | ## Enable shellcheck system-wide 56 | && ln -sf "$CODE_BUILTIN_EXTENSIONS_DIR"/timonwong.shellcheck-*/binaries/*/*/shellcheck \ 57 | /usr/local/bin/shellcheck \ 58 | ## Clean up 59 | && rm -rf /var/lib/apt/lists/* \ 60 | "$HOME/.config" \ 61 | "$HOME/.local" 62 | 63 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 64 | USER ${NB_USER} 65 | 66 | ENV HOME=/home/${NB_USER} 67 | 68 | WORKDIR ${HOME} 69 | -------------------------------------------------------------------------------- /common/subtags/root/Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE 2 | 3 | FROM ${BUILD_ON_IMAGE} 4 | 5 | ARG BUILD_START 6 | 7 | ENV BUILD_DATE=${BUILD_START} 8 | 9 | USER root 10 | -------------------------------------------------------------------------------- /geospatial/3.6.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:3.6.2 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | lbzip2 \ 8 | libfftw3-dev \ 9 | libgdal-dev \ 10 | libgeos-dev \ 11 | libgsl0-dev \ 12 | libgl1-mesa-dev \ 13 | libglu1-mesa-dev \ 14 | libhdf4-alt-dev \ 15 | libhdf5-dev \ 16 | libjq-dev \ 17 | liblwgeom-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev 30 | #unixodbc-dev 31 | 32 | RUN install2.r --error \ 33 | #RColorBrewer \ 34 | RandomFields \ 35 | RNetCDF \ 36 | classInt \ 37 | deldir \ 38 | gstat \ 39 | hdf5r \ 40 | lidR \ 41 | mapdata \ 42 | maptools \ 43 | mapview \ 44 | ncdf4 \ 45 | proj4 \ 46 | raster \ 47 | rgdal \ 48 | rgeos \ 49 | rlas \ 50 | sf \ 51 | sp \ 52 | spacetime \ 53 | spatstat \ 54 | spdep \ 55 | geoR \ 56 | geosphere \ 57 | ## from bioconductor 58 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 59 | ## Clean up 60 | && rm -rf /tmp/* \ 61 | && rm -rf /var/lib/apt/lists/* 62 | 63 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 64 | USER ${NB_USER} 65 | -------------------------------------------------------------------------------- /geospatial/3.6.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:3.6.3 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | lbzip2 \ 8 | libfftw3-dev \ 9 | libgdal-dev \ 10 | libgeos-dev \ 11 | libgsl0-dev \ 12 | libgl1-mesa-dev \ 13 | libglu1-mesa-dev \ 14 | libhdf4-alt-dev \ 15 | libhdf5-dev \ 16 | libjq-dev \ 17 | liblwgeom-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev 30 | #unixodbc-dev 31 | 32 | RUN install2.r --error \ 33 | #RColorBrewer \ 34 | RandomFields \ 35 | RNetCDF \ 36 | classInt \ 37 | deldir \ 38 | gstat \ 39 | hdf5r \ 40 | lidR \ 41 | mapdata \ 42 | maptools \ 43 | mapview \ 44 | ncdf4 \ 45 | proj4 \ 46 | raster \ 47 | rgdal \ 48 | rgeos \ 49 | rlas \ 50 | sf \ 51 | sp \ 52 | spacetime \ 53 | spatstat \ 54 | spdep \ 55 | geoR \ 56 | geosphere \ 57 | ## from bioconductor 58 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 59 | ## Clean up 60 | && rm -rf /tmp/* \ 61 | && rm -rf /var/lib/apt/lists/* 62 | 63 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 64 | USER ${NB_USER} 65 | -------------------------------------------------------------------------------- /geospatial/4.0.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.0 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | lbzip2 \ 8 | libfftw3-dev \ 9 | libgdal-dev \ 10 | libgeos-dev \ 11 | libgsl0-dev \ 12 | libgl1-mesa-dev \ 13 | libglu1-mesa-dev \ 14 | libhdf4-alt-dev \ 15 | libhdf5-dev \ 16 | libjq-dev \ 17 | liblwgeom-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev \ 30 | #unixodbc-dev 31 | && install2.r --error \ 32 | #RColorBrewer \ 33 | RandomFields \ 34 | RNetCDF \ 35 | classInt \ 36 | deldir \ 37 | gstat \ 38 | hdf5r \ 39 | lidR \ 40 | mapdata \ 41 | maptools \ 42 | mapview \ 43 | ncdf4 \ 44 | proj4 \ 45 | raster \ 46 | rgdal \ 47 | rgeos \ 48 | rlas \ 49 | sf \ 50 | sp \ 51 | spacetime \ 52 | spatstat \ 53 | spdep \ 54 | geoR \ 55 | geosphere \ 56 | ## from bioconductor 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.0.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.1 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | lbzip2 \ 8 | libfftw3-dev \ 9 | libgdal-dev \ 10 | libgeos-dev \ 11 | libgsl0-dev \ 12 | libgl1-mesa-dev \ 13 | libglu1-mesa-dev \ 14 | libhdf4-alt-dev \ 15 | libhdf5-dev \ 16 | libjq-dev \ 17 | liblwgeom-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev \ 30 | #unixodbc-dev 31 | && install2.r --error \ 32 | #RColorBrewer \ 33 | RandomFields \ 34 | RNetCDF \ 35 | classInt \ 36 | deldir \ 37 | gstat \ 38 | hdf5r \ 39 | lidR \ 40 | mapdata \ 41 | maptools \ 42 | mapview \ 43 | ncdf4 \ 44 | proj4 \ 45 | raster \ 46 | rgdal \ 47 | rgeos \ 48 | rlas \ 49 | sf \ 50 | sp \ 51 | spacetime \ 52 | spatstat \ 53 | spdep \ 54 | geoR \ 55 | geosphere \ 56 | ## from bioconductor 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.0.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.2 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | lbzip2 \ 8 | libfftw3-dev \ 9 | libgdal-dev \ 10 | libgeos-dev \ 11 | libgsl0-dev \ 12 | libgl1-mesa-dev \ 13 | libglu1-mesa-dev \ 14 | libhdf4-alt-dev \ 15 | libhdf5-dev \ 16 | libjq-dev \ 17 | liblwgeom-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev \ 30 | #unixodbc-dev 31 | && install2.r --error \ 32 | #RColorBrewer \ 33 | RandomFields \ 34 | RNetCDF \ 35 | classInt \ 36 | deldir \ 37 | gstat \ 38 | hdf5r \ 39 | lidR \ 40 | mapdata \ 41 | maptools \ 42 | mapview \ 43 | ncdf4 \ 44 | proj4 \ 45 | raster \ 46 | rgdal \ 47 | rgeos \ 48 | rlas \ 49 | sf \ 50 | sp \ 51 | spacetime \ 52 | spatstat \ 53 | spdep \ 54 | geoR \ 55 | geosphere \ 56 | ## from bioconductor 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.0.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.3 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | libfftw3-dev \ 8 | libgdal-dev \ 9 | libgeos-dev \ 10 | libgsl0-dev \ 11 | libgl1-mesa-dev \ 12 | libglu1-mesa-dev \ 13 | libhdf4-alt-dev \ 14 | libhdf5-dev \ 15 | libjq-dev \ 16 | liblwgeom-dev \ 17 | #libpq-dev \ 18 | libproj-dev \ 19 | libprotobuf-dev \ 20 | libnetcdf-dev \ 21 | #libsqlite3-dev \ 22 | #libssl-dev \ 23 | libudunits2-dev \ 24 | netcdf-bin \ 25 | postgis \ 26 | protobuf-compiler \ 27 | sqlite3 \ 28 | tk-dev \ 29 | #unixodbc-dev 30 | && install2.r --error \ 31 | #RColorBrewer \ 32 | RandomFields \ 33 | RNetCDF \ 34 | classInt \ 35 | deldir \ 36 | gstat \ 37 | hdf5r \ 38 | lidR \ 39 | mapdata \ 40 | maptools \ 41 | mapview \ 42 | ncdf4 \ 43 | proj4 \ 44 | raster \ 45 | rgdal \ 46 | rgeos \ 47 | rlas \ 48 | sf \ 49 | sp \ 50 | spacetime \ 51 | spatstat \ 52 | spdep \ 53 | geoR \ 54 | geosphere \ 55 | ## from bioconductor 56 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 57 | ## Clean up 58 | && rm -rf /tmp/* \ 59 | && rm -rf /var/lib/apt/lists/* 60 | 61 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 62 | USER ${NB_USER} 63 | -------------------------------------------------------------------------------- /geospatial/4.0.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.4 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | libfftw3-dev \ 8 | libgdal-dev \ 9 | libgeos-dev \ 10 | libgsl0-dev \ 11 | libgl1-mesa-dev \ 12 | libglu1-mesa-dev \ 13 | libhdf4-alt-dev \ 14 | libhdf5-dev \ 15 | libjq-dev \ 16 | liblwgeom-dev \ 17 | #libpq-dev \ 18 | libproj-dev \ 19 | libprotobuf-dev \ 20 | libnetcdf-dev \ 21 | #libsqlite3-dev \ 22 | #libssl-dev \ 23 | libudunits2-dev \ 24 | netcdf-bin \ 25 | postgis \ 26 | protobuf-compiler \ 27 | sqlite3 \ 28 | tk-dev \ 29 | #unixodbc-dev 30 | && install2.r --error \ 31 | #RColorBrewer \ 32 | RandomFields \ 33 | RNetCDF \ 34 | classInt \ 35 | deldir \ 36 | gstat \ 37 | hdf5r \ 38 | lidR \ 39 | mapdata \ 40 | maptools \ 41 | mapview \ 42 | ncdf4 \ 43 | proj4 \ 44 | raster \ 45 | rgdal \ 46 | rgeos \ 47 | rlas \ 48 | sf \ 49 | sp \ 50 | spacetime \ 51 | spatstat \ 52 | spdep \ 53 | geoR \ 54 | geosphere \ 55 | ## from bioconductor 56 | ## ‘rhdf5’ and ‘rhdf5filters’ have non-zero exit status on aarch64 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.0.5.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.0.5 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get install -y --no-install-recommends \ 7 | libfftw3-dev \ 8 | libgdal-dev \ 9 | libgeos-dev \ 10 | libgsl0-dev \ 11 | libgl1-mesa-dev \ 12 | libglu1-mesa-dev \ 13 | libhdf4-alt-dev \ 14 | libhdf5-dev \ 15 | libjq-dev \ 16 | liblwgeom-dev \ 17 | #libpq-dev \ 18 | libproj-dev \ 19 | libprotobuf-dev \ 20 | libnetcdf-dev \ 21 | #libsqlite3-dev \ 22 | #libssl-dev \ 23 | libudunits2-dev \ 24 | netcdf-bin \ 25 | postgis \ 26 | protobuf-compiler \ 27 | sqlite3 \ 28 | tk-dev \ 29 | #unixodbc-dev 30 | && install2.r --error \ 31 | #RColorBrewer \ 32 | RandomFields \ 33 | RNetCDF \ 34 | classInt \ 35 | deldir \ 36 | gstat \ 37 | hdf5r \ 38 | lidR \ 39 | mapdata \ 40 | maptools \ 41 | mapview \ 42 | ncdf4 \ 43 | proj4 \ 44 | raster \ 45 | rgdal \ 46 | rgeos \ 47 | rlas \ 48 | sf \ 49 | sp \ 50 | spacetime \ 51 | spatstat \ 52 | spdep \ 53 | geoR \ 54 | geosphere \ 55 | ## from bioconductor 56 | ## ‘rhdf5’ and ‘rhdf5filters’ have non-zero exit status on aarch64 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.1.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.1.0 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | USER root 6 | 7 | RUN apt-get update \ 8 | && apt-get install -y --no-install-recommends \ 9 | libfftw3-dev \ 10 | libgdal-dev \ 11 | libgeos-dev \ 12 | libgsl0-dev \ 13 | libgl1-mesa-dev \ 14 | libglu1-mesa-dev \ 15 | libhdf4-alt-dev \ 16 | libhdf5-dev \ 17 | libjq-dev \ 18 | liblwgeom-dev \ 19 | #libpq-dev \ 20 | libproj-dev \ 21 | libprotobuf-dev \ 22 | libnetcdf-dev \ 23 | #libsqlite3-dev \ 24 | #libssl-dev \ 25 | libudunits2-dev \ 26 | netcdf-bin \ 27 | postgis \ 28 | protobuf-compiler \ 29 | sqlite3 \ 30 | tk-dev \ 31 | #unixodbc-dev 32 | && install2.r --error \ 33 | #RColorBrewer \ 34 | RandomFields \ 35 | RNetCDF \ 36 | classInt \ 37 | deldir \ 38 | gstat \ 39 | hdf5r \ 40 | lidR \ 41 | mapdata \ 42 | maptools \ 43 | mapview \ 44 | ncdf4 \ 45 | proj4 \ 46 | raster \ 47 | rgdal \ 48 | rgeos \ 49 | rlas \ 50 | sf \ 51 | sp \ 52 | spacetime \ 53 | spatstat \ 54 | spdep \ 55 | geoR \ 56 | geosphere \ 57 | ## from bioconductor 58 | ## ‘rhdf5’ and ‘rhdf5filters’ have non-zero exit status on aarch64 59 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 60 | ## Clean up 61 | && rm -rf /tmp/* \ 62 | && rm -rf /var/lib/apt/lists/* 63 | 64 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 65 | USER ${NB_USER} 66 | -------------------------------------------------------------------------------- /geospatial/4.1.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.1.1 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | USER root 6 | 7 | RUN apt-get update \ 8 | && apt-get install -y --no-install-recommends \ 9 | libfftw3-dev \ 10 | libgdal-dev \ 11 | libgeos-dev \ 12 | libgsl0-dev \ 13 | libgl1-mesa-dev \ 14 | libglu1-mesa-dev \ 15 | libhdf4-alt-dev \ 16 | libhdf5-dev \ 17 | libjq-dev \ 18 | #libpq-dev \ 19 | libproj-dev \ 20 | libprotobuf-dev \ 21 | libnetcdf-dev \ 22 | #libsqlite3-dev \ 23 | #libssl-dev \ 24 | libudunits2-dev \ 25 | netcdf-bin \ 26 | postgis \ 27 | protobuf-compiler \ 28 | sqlite3 \ 29 | tk-dev \ 30 | #unixodbc-dev 31 | && install2.r --error \ 32 | #RColorBrewer \ 33 | RandomFields \ 34 | RNetCDF \ 35 | classInt \ 36 | deldir \ 37 | gstat \ 38 | hdf5r \ 39 | lidR \ 40 | mapdata \ 41 | maptools \ 42 | mapview \ 43 | ncdf4 \ 44 | proj4 \ 45 | raster \ 46 | rgdal \ 47 | rgeos \ 48 | rlas \ 49 | sf \ 50 | sp \ 51 | spacetime \ 52 | spatstat \ 53 | spdep \ 54 | geoR \ 55 | geosphere \ 56 | ## from bioconductor 57 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 58 | ## Clean up 59 | && rm -rf /tmp/* \ 60 | && rm -rf /var/lib/apt/lists/* 61 | 62 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 63 | USER ${NB_USER} 64 | -------------------------------------------------------------------------------- /geospatial/4.1.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.1.2 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | USER root 8 | 9 | RUN apt-get update \ 10 | && apt-get install -y --no-install-recommends \ 11 | gdal-bin \ 12 | libfftw3-dev \ 13 | libgdal-dev \ 14 | libgeos-dev \ 15 | libgsl0-dev \ 16 | #libgl1-mesa-dev \ 17 | #libglu1-mesa-dev \ 18 | libhdf4-alt-dev \ 19 | libhdf5-dev \ 20 | libjq-dev \ 21 | #libpq-dev \ 22 | libproj-dev \ 23 | libprotobuf-dev \ 24 | libnetcdf-dev \ 25 | #libsqlite3-dev \ 26 | #libssl-dev \ 27 | libudunits2-dev \ 28 | netcdf-bin \ 29 | postgis \ 30 | protobuf-compiler \ 31 | sqlite3 \ 32 | tk-dev \ 33 | #unixodbc-dev 34 | && install2.r --error --skipinstalled -n $NCPUS \ 35 | #RColorBrewer \ 36 | RandomFields \ 37 | RNetCDF \ 38 | classInt \ 39 | deldir \ 40 | gstat \ 41 | hdf5r \ 42 | lidR \ 43 | mapdata \ 44 | maptools \ 45 | mapview \ 46 | ncdf4 \ 47 | proj4 \ 48 | raster \ 49 | rgdal \ 50 | rgeos \ 51 | rlas \ 52 | sf \ 53 | sp \ 54 | spacetime \ 55 | spatstat \ 56 | spatialreg \ 57 | spdep \ 58 | stars \ 59 | terra \ 60 | tidync \ 61 | tmap \ 62 | geoR \ 63 | geosphere \ 64 | ## from bioconductor 65 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 66 | ## Clean up 67 | && rm -rf /tmp/* \ 68 | && rm -rf /var/lib/apt/lists/* 69 | 70 | ## Install wgrib2 for NOAA's NOMADS / rNOMADS forecast files 71 | #RUN cd /opt \ 72 | # && wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz \ 73 | # && tar -xvf wgrib2.tgz \ 74 | # && rm -rf wgrib2.tgz \ 75 | # && cd grib2 \ 76 | # ## arm64: Needs to be compiled with USE_NETCDF4=1, USE_JASPER=0 77 | # ## https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/index.html 78 | # && if [ $(dpkg --print-architecture) = "arm64" ]; then \ 79 | # sed -i 's/^USE_NETCDF4=0/USE_NETCDF4=1/' makefile; \ 80 | # sed -i 's/^USE_NETCDF3=1/USE_NETCDF3=0/' makefile; \ 81 | # sed -i 's/^USE_JASPER=1/USE_JASPER=0/' makefile; \ 82 | # NETCDF4_SRC=`sed -n 's/ netcdf4src=\(.*\)/\1/p' makefile`; \ 83 | # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/$NETCDF4_SRC; \ 84 | # HDF5_SRC=`sed -n 's/ hdf5src:=\(.*\)/\1/p' makefile`; \ 85 | # HDF5_MAJ_MIN_PAT=`echo $HDF5_SRC | \ 86 | # sed -n 's/hdf5-\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 87 | # HDF5_MAJ_MIN=`echo $HDF5_MAJ_MIN_PAT | \ 88 | # sed -n 's/\([[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 89 | # wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$HDF5_MAJ_MIN/hdf5-$HDF5_MAJ_MIN_PAT/src/$HDF5_SRC; \ 90 | # fi \ 91 | # && CC=gcc FC=gfortran make \ 92 | # && ln -s /opt/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 93 | 94 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 95 | USER ${NB_USER} 96 | -------------------------------------------------------------------------------- /geospatial/4.1.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:4.1.3 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | USER root 8 | 9 | RUN apt-get update \ 10 | && apt-get install -y --no-install-recommends \ 11 | gdal-bin \ 12 | libfftw3-dev \ 13 | libgdal-dev \ 14 | libgeos-dev \ 15 | libgsl0-dev \ 16 | #libgl1-mesa-dev \ 17 | #libglu1-mesa-dev \ 18 | libhdf4-alt-dev \ 19 | libhdf5-dev \ 20 | libjq-dev \ 21 | #libpq-dev \ 22 | libproj-dev \ 23 | libprotobuf-dev \ 24 | libnetcdf-dev \ 25 | #libsqlite3-dev \ 26 | #libssl-dev \ 27 | libudunits2-dev \ 28 | netcdf-bin \ 29 | postgis \ 30 | protobuf-compiler \ 31 | sqlite3 \ 32 | tk-dev \ 33 | #unixodbc-dev 34 | && install2.r --error --skipinstalled -n $NCPUS \ 35 | #RColorBrewer \ 36 | RandomFields \ 37 | RNetCDF \ 38 | classInt \ 39 | deldir \ 40 | gstat \ 41 | hdf5r \ 42 | lidR \ 43 | mapdata \ 44 | maptools \ 45 | mapview \ 46 | ncdf4 \ 47 | proj4 \ 48 | raster \ 49 | rgdal \ 50 | rgeos \ 51 | rlas \ 52 | sf \ 53 | sp \ 54 | spacetime \ 55 | spatstat \ 56 | spatialreg \ 57 | spdep \ 58 | stars \ 59 | terra \ 60 | tidync \ 61 | tmap \ 62 | geoR \ 63 | geosphere \ 64 | ## from bioconductor 65 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 66 | ## Clean up 67 | && rm -rf /tmp/* \ 68 | && rm -rf /var/lib/apt/lists/* 69 | 70 | ## Install wgrib2 for NOAA's NOMADS / rNOMADS forecast files 71 | #RUN cd /opt \ 72 | # && wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz \ 73 | # && tar -xvf wgrib2.tgz \ 74 | # && rm -rf wgrib2.tgz \ 75 | # && cd grib2 \ 76 | # ## arm64: Needs to be compiled with USE_NETCDF4=1, USE_JASPER=0 77 | # ## https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/index.html 78 | # && if [ $(dpkg --print-architecture) = "arm64" ]; then \ 79 | # sed -i 's/^USE_NETCDF4=0/USE_NETCDF4=1/' makefile; \ 80 | # sed -i 's/^USE_NETCDF3=1/USE_NETCDF3=0/' makefile; \ 81 | # sed -i 's/^USE_JASPER=1/USE_JASPER=0/' makefile; \ 82 | # NETCDF4_SRC=`sed -n 's/ netcdf4src=\(.*\)/\1/p' makefile`; \ 83 | # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/$NETCDF4_SRC; \ 84 | # HDF5_SRC=`sed -n 's/ hdf5src:=\(.*\)/\1/p' makefile`; \ 85 | # HDF5_MAJ_MIN_PAT=`echo $HDF5_SRC | \ 86 | # sed -n 's/hdf5-\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 87 | # HDF5_MAJ_MIN=`echo $HDF5_MAJ_MIN_PAT | \ 88 | # sed -n 's/\([[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 89 | # wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$HDF5_MAJ_MIN/hdf5-$HDF5_MAJ_MIN_PAT/src/$HDF5_SRC; \ 90 | # fi \ 91 | # && CC=gcc FC=gfortran make \ 92 | # && ln -s /opt/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 93 | 94 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 95 | USER ${NB_USER} 96 | -------------------------------------------------------------------------------- /geospatial/4.2.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG R_VERSION=4.2.0 2 | 3 | FROM registry.gitlab.b-data.ch/jupyterlab/r/verse:${R_VERSION} 4 | 5 | ARG NCPUS=1 6 | 7 | ARG DEBIAN_FRONTEND=noninteractive 8 | 9 | USER root 10 | 11 | RUN apt-get update \ 12 | && apt-get install -y --no-install-recommends \ 13 | gdal-bin \ 14 | libfftw3-dev \ 15 | libgdal-dev \ 16 | libgeos-dev \ 17 | libgsl0-dev \ 18 | #libgl1-mesa-dev \ 19 | #libglu1-mesa-dev \ 20 | libhdf4-alt-dev \ 21 | libhdf5-dev \ 22 | libjq-dev \ 23 | #libpq-dev \ 24 | libproj-dev \ 25 | libprotobuf-dev \ 26 | libnetcdf-dev \ 27 | #libsqlite3-dev \ 28 | #libssl-dev \ 29 | libudunits2-dev \ 30 | netcdf-bin \ 31 | postgis \ 32 | protobuf-compiler \ 33 | sqlite3 \ 34 | tk-dev \ 35 | #unixodbc-dev 36 | && install2.r --error --skipinstalled -n $NCPUS \ 37 | #RColorBrewer \ 38 | RNetCDF \ 39 | classInt \ 40 | deldir \ 41 | gstat \ 42 | hdf5r \ 43 | lidR \ 44 | mapdata \ 45 | maptools \ 46 | mapview \ 47 | ncdf4 \ 48 | proj4 \ 49 | raster \ 50 | rgdal \ 51 | rgeos \ 52 | rlas \ 53 | sf \ 54 | sp \ 55 | spacetime \ 56 | spatstat \ 57 | spatialreg \ 58 | spdep \ 59 | stars \ 60 | terra \ 61 | tidync \ 62 | tmap \ 63 | geosphere \ 64 | ## Archived on 2022-05-04 as check problems were not corrected in time. 65 | && Rscript -e "devtools::install_version('RandomFields', version = '3.3.14')" \ 66 | ## Archived on 2022-05-04 as requires archived package 'RandomFields'. 67 | && Rscript -e "devtools::install_version('geoR', version = '1.8-1')" \ 68 | ## from bioconductor 69 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 70 | ## Clean up 71 | && rm -rf /tmp/* \ 72 | && rm -rf /var/lib/apt/lists/* 73 | 74 | ## Install wgrib2 for NOAA's NOMADS / rNOMADS forecast files 75 | #RUN cd /opt \ 76 | # && wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz \ 77 | # && tar -xvf wgrib2.tgz \ 78 | # && rm -rf wgrib2.tgz \ 79 | # && cd grib2 \ 80 | # ## arm64: Needs to be compiled with USE_NETCDF4=1, USE_JASPER=0 81 | # ## https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/index.html 82 | # && if [ $(dpkg --print-architecture) = "arm64" ]; then \ 83 | # sed -i 's/^USE_NETCDF4=0/USE_NETCDF4=1/' makefile; \ 84 | # sed -i 's/^USE_NETCDF3=1/USE_NETCDF3=0/' makefile; \ 85 | # sed -i 's/^USE_JASPER=1/USE_JASPER=0/' makefile; \ 86 | # NETCDF4_SRC=`sed -n 's/ netcdf4src=\(.*\)/\1/p' makefile`; \ 87 | # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/$NETCDF4_SRC; \ 88 | # HDF5_SRC=`sed -n 's/ hdf5src:=\(.*\)/\1/p' makefile`; \ 89 | # HDF5_MAJ_MIN_PAT=`echo $HDF5_SRC | \ 90 | # sed -n 's/hdf5-\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 91 | # HDF5_MAJ_MIN=`echo $HDF5_MAJ_MIN_PAT | \ 92 | # sed -n 's/\([[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 93 | # wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$HDF5_MAJ_MIN/hdf5-$HDF5_MAJ_MIN_PAT/src/$HDF5_SRC; \ 94 | # fi \ 95 | # && CC=gcc FC=gfortran make \ 96 | # && ln -s /opt/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 97 | 98 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 99 | USER ${NB_USER} 100 | -------------------------------------------------------------------------------- /geospatial/4.2.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=registry.gitlab.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.2.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | USER root 11 | 12 | RUN apt-get update \ 13 | && apt-get install -y --no-install-recommends \ 14 | gdal-bin \ 15 | libfftw3-dev \ 16 | libgdal-dev \ 17 | libgeos-dev \ 18 | libgsl0-dev \ 19 | #libgl1-mesa-dev \ 20 | #libglu1-mesa-dev \ 21 | libhdf4-alt-dev \ 22 | libhdf5-dev \ 23 | libjq-dev \ 24 | #libpq-dev \ 25 | libproj-dev \ 26 | libprotobuf-dev \ 27 | libnetcdf-dev \ 28 | #libsqlite3-dev \ 29 | #libssl-dev \ 30 | libudunits2-dev \ 31 | netcdf-bin \ 32 | postgis \ 33 | protobuf-compiler \ 34 | sqlite3 \ 35 | tk-dev \ 36 | #unixodbc-dev 37 | && install2.r --error --skipinstalled -n $NCPUS \ 38 | #RColorBrewer \ 39 | RNetCDF \ 40 | classInt \ 41 | deldir \ 42 | gstat \ 43 | hdf5r \ 44 | lidR \ 45 | mapdata \ 46 | maptools \ 47 | mapview \ 48 | ncdf4 \ 49 | proj4 \ 50 | raster \ 51 | rgdal \ 52 | rgeos \ 53 | rlas \ 54 | sf \ 55 | sp \ 56 | spacetime \ 57 | spatstat \ 58 | spatialreg \ 59 | spdep \ 60 | stars \ 61 | terra \ 62 | tidync \ 63 | tmap \ 64 | geoR \ 65 | geosphere \ 66 | ## from bioconductor 67 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 68 | ## Clean up 69 | && rm -rf /tmp/* \ 70 | && rm -rf /var/lib/apt/lists/* 71 | 72 | ## Install wgrib2 for NOAA's NOMADS / rNOMADS forecast files 73 | #RUN cd /opt \ 74 | # && wget https://www.ftp.cpc.ncep.noaa.gov/wd51we/wgrib2/wgrib2.tgz \ 75 | # && tar -xvf wgrib2.tgz \ 76 | # && rm -rf wgrib2.tgz \ 77 | # && cd grib2 \ 78 | # ## arm64: Needs to be compiled with USE_NETCDF4=1, USE_JASPER=0 79 | # ## https://www.cpc.ncep.noaa.gov/products/wesley/wgrib2/index.html 80 | # && if [ $(dpkg --print-architecture) = "arm64" ]; then \ 81 | # sed -i 's/^USE_NETCDF4=0/USE_NETCDF4=1/' makefile; \ 82 | # sed -i 's/^USE_NETCDF3=1/USE_NETCDF3=0/' makefile; \ 83 | # sed -i 's/^USE_JASPER=1/USE_JASPER=0/' makefile; \ 84 | # NETCDF4_SRC=`sed -n 's/ netcdf4src=\(.*\)/\1/p' makefile`; \ 85 | # wget ftp://ftp.unidata.ucar.edu/pub/netcdf/$NETCDF4_SRC; \ 86 | # HDF5_SRC=`sed -n 's/ hdf5src:=\(.*\)/\1/p' makefile`; \ 87 | # HDF5_MAJ_MIN_PAT=`echo $HDF5_SRC | \ 88 | # sed -n 's/hdf5-\([[:digit:]]\+\.[[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 89 | # HDF5_MAJ_MIN=`echo $HDF5_MAJ_MIN_PAT | \ 90 | # sed -n 's/\([[:digit:]]\+\.[[:digit:]]\+\).*/\1/p'`; \ 91 | # wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-$HDF5_MAJ_MIN/hdf5-$HDF5_MAJ_MIN_PAT/src/$HDF5_SRC; \ 92 | # fi \ 93 | # && CC=gcc FC=gfortran make \ 94 | # && ln -s /opt/grib2/wgrib2/wgrib2 /usr/local/bin/wgrib2 95 | 96 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 97 | USER ${NB_USER} 98 | -------------------------------------------------------------------------------- /geospatial/4.2.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.2.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | netcdf-bin \ 37 | postgis \ 38 | protobuf-compiler \ 39 | sqlite3 \ 40 | tk-dev \ 41 | #unixodbc-dev 42 | ## sf: Installation fails on Debian 11 (bullseye) for v1.0-10 43 | ## https://github.com/r-spatial/sf/issues/2118 44 | && R -e "devtools::install_version('sf', version = '1.0-9')" \ 45 | && install2.r --error --skipinstalled -n $NCPUS \ 46 | #RColorBrewer \ 47 | RNetCDF \ 48 | classInt \ 49 | deldir \ 50 | gstat \ 51 | hdf5r \ 52 | lidR \ 53 | mapdata \ 54 | maptools \ 55 | mapview \ 56 | ncdf4 \ 57 | proj4 \ 58 | raster \ 59 | rgdal \ 60 | rgeos \ 61 | rlas \ 62 | sp \ 63 | spacetime \ 64 | spatstat \ 65 | spatialreg \ 66 | spdep \ 67 | stars \ 68 | terra \ 69 | tidync \ 70 | tmap \ 71 | geoR \ 72 | geosphere \ 73 | ## from bioconductor 74 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/4.2.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.2.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | netcdf-bin \ 37 | postgis \ 38 | protobuf-compiler \ 39 | sqlite3 \ 40 | tk-dev \ 41 | #unixodbc-dev 42 | && install2.r --error --skipinstalled -n $NCPUS \ 43 | #RColorBrewer \ 44 | RNetCDF \ 45 | classInt \ 46 | deldir \ 47 | gstat \ 48 | hdf5r \ 49 | lidR \ 50 | mapdata \ 51 | maptools \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rgdal \ 57 | rgeos \ 58 | rlas \ 59 | sf \ 60 | sp \ 61 | spacetime \ 62 | spatstat \ 63 | spatialreg \ 64 | spdep \ 65 | stars \ 66 | terra \ 67 | tidync \ 68 | tmap \ 69 | geoR \ 70 | geosphere \ 71 | ## from bioconductor 72 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 73 | ## Clean up 74 | && rm -rf /tmp/* \ 75 | && rm -rf /var/lib/apt/lists/* 76 | 77 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 78 | USER ${NB_USER} 79 | -------------------------------------------------------------------------------- /geospatial/4.3.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.3.0 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | netcdf-bin \ 37 | postgis \ 38 | protobuf-compiler \ 39 | sqlite3 \ 40 | tk-dev \ 41 | #unixodbc-dev 42 | && install2.r --error --skipinstalled -n $NCPUS \ 43 | #RColorBrewer \ 44 | RNetCDF \ 45 | classInt \ 46 | deldir \ 47 | gstat \ 48 | hdf5r \ 49 | lidR \ 50 | mapdata \ 51 | maptools \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rgdal \ 57 | rgeos \ 58 | rlas \ 59 | sf \ 60 | sp \ 61 | spacetime \ 62 | spatstat \ 63 | spatialreg \ 64 | spdep \ 65 | stars \ 66 | terra \ 67 | tidync \ 68 | tmap \ 69 | geoR \ 70 | geosphere \ 71 | ## from bioconductor 72 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 73 | ## Clean up 74 | && rm -rf /tmp/* \ 75 | && rm -rf /var/lib/apt/lists/* 76 | 77 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 78 | USER ${NB_USER} 79 | -------------------------------------------------------------------------------- /geospatial/4.3.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.3.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from PPM 73 | && strip $(R RHOME)/site-library/*/libs/*.so \ 74 | ## Clean up 75 | && rm -rf /tmp/* \ 76 | && rm -rf /var/lib/apt/lists/* 77 | 78 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 79 | USER ${NB_USER} 80 | -------------------------------------------------------------------------------- /geospatial/4.3.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.3.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from PPM 73 | && strip $(R RHOME)/site-library/*/libs/*.so \ 74 | ## Clean up 75 | && rm -rf /tmp/* \ 76 | && rm -rf /var/lib/apt/lists/* 77 | 78 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 79 | USER ${NB_USER} 80 | -------------------------------------------------------------------------------- /geospatial/4.3.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.3.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from PPPM 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/4.4.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.4.0 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | #libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from P3M 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/4.4.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.4.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | #libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from P3M 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/4.4.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.4.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | #libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from P3M 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/4.4.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION=4.4.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | #libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from P3M 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /geospatial/latest.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/verse 2 | ARG R_VERSION 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | libfftw3-dev \ 21 | libgdal-dev \ 22 | libgeos-dev \ 23 | libgsl0-dev \ 24 | #libgl1-mesa-dev \ 25 | #libglu1-mesa-dev \ 26 | libhdf4-alt-dev \ 27 | #libhdf5-dev \ 28 | libjq-dev \ 29 | #libpq-dev \ 30 | libproj-dev \ 31 | libprotobuf-dev \ 32 | libnetcdf-dev \ 33 | #libsqlite3-dev \ 34 | #libssl-dev \ 35 | libudunits2-dev \ 36 | nco \ 37 | netcdf-bin \ 38 | postgis \ 39 | protobuf-compiler \ 40 | sqlite3 \ 41 | tk-dev \ 42 | #unixodbc-dev 43 | && install2.r --error --skipinstalled -n $NCPUS \ 44 | #RColorBrewer \ 45 | RNetCDF \ 46 | classInt \ 47 | deldir \ 48 | gstat \ 49 | hdf5r \ 50 | lidR \ 51 | mapdata \ 52 | mapview \ 53 | ncdf4 \ 54 | proj4 \ 55 | raster \ 56 | rlas \ 57 | sf \ 58 | sfarrow \ 59 | sp \ 60 | spacetime \ 61 | spatstat \ 62 | spatialreg \ 63 | spdep \ 64 | stars \ 65 | terra \ 66 | tidync \ 67 | tmap \ 68 | geoR \ 69 | geosphere \ 70 | ## from bioconductor 71 | && R -e "BiocManager::install('rhdf5', update = FALSE, ask = FALSE)" \ 72 | ## Strip libraries of binary packages installed from P3M 73 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 74 | && strip ${RLS}/*/libs/*.so \ 75 | ## Clean up 76 | && rm -rf /tmp/* \ 77 | && rm -rf /var/lib/apt/lists/* 78 | 79 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 80 | USER ${NB_USER} 81 | -------------------------------------------------------------------------------- /qgisprocess/conf/user/var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini: -------------------------------------------------------------------------------- 1 | [qgis] 2 | customEnvVars="append|PYTHONPATH=:/usr/lib/python3/dist-packages" 3 | customEnvVarsUse=true 4 | 5 | [UI] 6 | UITheme=Night Mapping 7 | -------------------------------------------------------------------------------- /qgisprocess/scripts/usr/local/bin/before-notebook.d/70-qgis.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Copyright (c) 2023 b-data GmbH. 3 | # Distributed under the terms of the MIT License. 4 | 5 | set -e 6 | 7 | if [ "$(id -u)" == 0 ] ; then 8 | # Put inital QGIS settings in place 9 | run_user_group mkdir -p "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/QGIS" 10 | if [[ ! -f "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini" ]]; then 11 | run_user_group cp -a --no-preserve=ownership \ 12 | /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini \ 13 | "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini" 14 | fi 15 | 16 | run_user_group mkdir -p "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 17 | 18 | # Copy plugin 'Processing Saga NextGen Provider' 19 | run_user_group rm -rf "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/python/plugins/processing_saga_nextgen" 20 | run_user_group cp -a --no-preserve=ownership \ 21 | /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/processing_saga_nextgen \ 22 | "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 23 | 24 | # Copy plugin 'OrfeoToolbox Provider' 25 | if [[ ! -d "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider" ]]; then 26 | if [[ -d /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider ]]; then 27 | run_user_group cp -a --no-preserve=ownership \ 28 | /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider \ 29 | "/home/$NB_USER${DOMAIN:+@$DOMAIN}/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 30 | fi 31 | fi 32 | else 33 | # Put inital QGIS settings in place 34 | mkdir -p "$HOME/.local/share/QGIS/QGIS3/profiles/default/QGIS" 35 | if [[ ! -f "$HOME/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini" ]]; then 36 | cp -a /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini \ 37 | "$HOME/.local/share/QGIS/QGIS3/profiles/default/QGIS/QGIS3.ini" 38 | fi 39 | 40 | mkdir -p "$HOME/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 41 | 42 | # Copy plugin 'Processing Saga NextGen Provider' 43 | rm -rf "$HOME/.local/share/QGIS/QGIS3/profiles/default/python/plugins/processing_saga_nextgen" 44 | cp -a /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/processing_saga_nextgen \ 45 | "$HOME/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 46 | 47 | # Copy plugin 'OrfeoToolbox Provider' 48 | if [[ ! -d "$HOME/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider" ]]; then 49 | if [[ -d /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider ]]; then 50 | cp -a /var/backups/skel/.local/share/QGIS/QGIS3/profiles/default/python/plugins/orfeoToolbox_provider \ 51 | "$HOME/.local/share/QGIS/QGIS3/profiles/default/python/plugins" 52 | fi 53 | fi 54 | fi 55 | -------------------------------------------------------------------------------- /tidyverse/3.6.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:3.6.2 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libsqlite3-dev \ 10 | libmariadbd-dev \ 11 | libmariadbclient-dev \ 12 | libpq-dev \ 13 | libssh2-1-dev \ 14 | unixodbc-dev \ 15 | libsasl2-dev \ 16 | && install2.r --error \ 17 | --deps TRUE \ 18 | tidyverse \ 19 | dplyr \ 20 | devtools \ 21 | formatR \ 22 | #remotes \ 23 | selectr \ 24 | caTools \ 25 | BiocManager \ 26 | ## Clean up 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/lib/apt/lists/* 29 | 30 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 31 | USER ${NB_USER} 32 | -------------------------------------------------------------------------------- /tidyverse/3.6.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:3.6.3 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libsqlite3-dev \ 10 | libmariadbd-dev \ 11 | libmariadbclient-dev \ 12 | libpq-dev \ 13 | libssh2-1-dev \ 14 | unixodbc-dev \ 15 | libsasl2-dev \ 16 | && install2.r --error \ 17 | --deps TRUE \ 18 | tidyverse \ 19 | dplyr \ 20 | devtools \ 21 | formatR \ 22 | #remotes \ 23 | selectr \ 24 | caTools \ 25 | BiocManager \ 26 | ## Clean up 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/lib/apt/lists/* 29 | 30 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 31 | USER ${NB_USER} 32 | -------------------------------------------------------------------------------- /tidyverse/4.0.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.0 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libsqlite3-dev \ 10 | libmariadbd-dev \ 11 | libmariadbclient-dev \ 12 | libpq-dev \ 13 | libssh2-1-dev \ 14 | unixodbc-dev \ 15 | libsasl2-dev \ 16 | && install2.r --error BiocManager \ 17 | && install2.r --error \ 18 | --deps TRUE \ 19 | tidyverse \ 20 | dplyr \ 21 | devtools \ 22 | formatR \ 23 | #remotes \ 24 | selectr \ 25 | caTools \ 26 | ## Clean up 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/lib/apt/lists/* 29 | 30 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 31 | USER ${NB_USER} 32 | -------------------------------------------------------------------------------- /tidyverse/4.0.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.1 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libsqlite3-dev \ 10 | libmariadbd-dev \ 11 | libmariadbclient-dev \ 12 | libpq-dev \ 13 | libssh2-1-dev \ 14 | unixodbc-dev \ 15 | libsasl2-dev \ 16 | && install2.r --error BiocManager \ 17 | && install2.r --error \ 18 | --deps TRUE \ 19 | tidyverse \ 20 | dplyr \ 21 | devtools \ 22 | formatR \ 23 | #remotes \ 24 | selectr \ 25 | caTools \ 26 | ## Clean up 27 | && rm -rf /tmp/* \ 28 | && rm -rf /var/lib/apt/lists/* 29 | 30 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 31 | USER ${NB_USER} 32 | -------------------------------------------------------------------------------- /tidyverse/4.0.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.2 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libfribidi-dev \ 10 | libharfbuzz-dev \ 11 | libsqlite3-dev \ 12 | libmariadbd-dev \ 13 | libmariadbclient-dev \ 14 | libpq-dev \ 15 | libssh2-1-dev \ 16 | unixodbc-dev \ 17 | libsasl2-dev \ 18 | libtiff-dev \ 19 | && install2.r --error BiocManager \ 20 | && install2.r --error \ 21 | --deps TRUE \ 22 | tidyverse \ 23 | dplyr \ 24 | devtools \ 25 | formatR \ 26 | #remotes \ 27 | selectr \ 28 | caTools \ 29 | ## Clean up 30 | && rm -rf /tmp/* \ 31 | && rm -rf /var/lib/apt/lists/* 32 | 33 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 34 | USER ${NB_USER} 35 | -------------------------------------------------------------------------------- /tidyverse/4.0.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.3 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libfribidi-dev \ 10 | libgit2-dev \ 11 | libharfbuzz-dev \ 12 | libsqlite3-dev \ 13 | libmariadbd-dev \ 14 | libmariadbclient-dev \ 15 | libpq-dev \ 16 | libssh2-1-dev \ 17 | unixodbc-dev \ 18 | libsasl2-dev \ 19 | libtiff-dev \ 20 | && install2.r --error BiocManager \ 21 | && install2.r --error \ 22 | --deps TRUE \ 23 | tidyverse \ 24 | dplyr \ 25 | devtools \ 26 | formatR \ 27 | #remotes \ 28 | selectr \ 29 | caTools \ 30 | ## Clean up 31 | && rm -rf /tmp/* \ 32 | && rm -rf /var/lib/apt/lists/* 33 | 34 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 35 | USER ${NB_USER} 36 | -------------------------------------------------------------------------------- /tidyverse/4.0.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.4 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libfribidi-dev \ 10 | libgit2-dev \ 11 | libharfbuzz-dev \ 12 | libsqlite3-dev \ 13 | libmariadbd-dev \ 14 | libmariadbclient-dev \ 15 | libpq-dev \ 16 | libssh2-1-dev \ 17 | unixodbc-dev \ 18 | libsasl2-dev \ 19 | libtiff-dev \ 20 | ## Install patched version or RPostgreSQL 21 | ## Source: https://gitlab.b-data.ch/benz0li/rpostgresql 22 | && install2.r --error DBI \ 23 | && curl -sSL https://gitlab.b-data.ch/benz0li/rpostgresql/-/package_files/6/download \ 24 | -o RPostgreSQL_0.6-2.tar.gz \ 25 | && R CMD INSTALL RPostgreSQL_0.6-2.tar.gz \ 26 | && rm RPostgreSQL_0.6-2.tar.gz \ 27 | ## Install other packages in regular fashion 28 | && install2.r --error BiocManager \ 29 | && install2.r --error \ 30 | --deps TRUE \ 31 | --skipinstalled \ 32 | tidyverse \ 33 | dplyr \ 34 | devtools \ 35 | formatR \ 36 | #remotes \ 37 | selectr \ 38 | caTools \ 39 | ## Clean up 40 | && rm -rf /tmp/* \ 41 | && rm -rf /var/lib/apt/lists/* 42 | 43 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 44 | USER ${NB_USER} 45 | -------------------------------------------------------------------------------- /tidyverse/4.0.5.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.0.5 2 | 3 | USER root 4 | 5 | RUN apt-get update \ 6 | && apt-get -y install --no-install-recommends \ 7 | #libxml2-dev \ 8 | libcairo2-dev \ 9 | libfribidi-dev \ 10 | libgit2-dev \ 11 | libharfbuzz-dev \ 12 | libsqlite3-dev \ 13 | libmariadbd-dev \ 14 | libmariadbclient-dev \ 15 | libpq-dev \ 16 | libssh2-1-dev \ 17 | unixodbc-dev \ 18 | libsasl2-dev \ 19 | libtiff-dev \ 20 | ## Install patched version or RPostgreSQL 21 | ## Source: https://gitlab.b-data.ch/benz0li/rpostgresql 22 | && install2.r --error DBI \ 23 | && curl -sSL https://gitlab.b-data.ch/benz0li/rpostgresql/-/package_files/6/download \ 24 | -o RPostgreSQL_0.6-2.tar.gz \ 25 | && R CMD INSTALL RPostgreSQL_0.6-2.tar.gz \ 26 | && rm RPostgreSQL_0.6-2.tar.gz \ 27 | ## Install other packages in regular fashion 28 | && install2.r --error BiocManager \ 29 | && install2.r --error \ 30 | --deps TRUE \ 31 | --skipinstalled \ 32 | tidyverse \ 33 | dplyr \ 34 | devtools \ 35 | formatR \ 36 | #remotes \ 37 | selectr \ 38 | caTools \ 39 | ## Clean up 40 | && rm -rf /tmp/* \ 41 | && rm -rf /var/lib/apt/lists/* 42 | 43 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 44 | USER ${NB_USER} 45 | -------------------------------------------------------------------------------- /tidyverse/4.1.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.1.0 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | USER root 6 | 7 | RUN apt-get update \ 8 | && apt-get -y install --no-install-recommends \ 9 | #libxml2-dev \ 10 | libcairo2-dev \ 11 | libfribidi-dev \ 12 | libgit2-dev \ 13 | libharfbuzz-dev \ 14 | libsqlite3-dev \ 15 | libmariadbd-dev \ 16 | libmariadbclient-dev \ 17 | libpq-dev \ 18 | libssh2-1-dev \ 19 | unixodbc-dev \ 20 | libsasl2-dev \ 21 | libtiff-dev \ 22 | ## Install patched version or RPostgreSQL 23 | ## Source: https://gitlab.b-data.ch/benz0li/rpostgresql 24 | && install2.r --error DBI \ 25 | && curl -sSL https://gitlab.b-data.ch/benz0li/rpostgresql/-/package_files/6/download \ 26 | -o RPostgreSQL_0.6-2.tar.gz \ 27 | && R CMD INSTALL RPostgreSQL_0.6-2.tar.gz \ 28 | && rm RPostgreSQL_0.6-2.tar.gz \ 29 | ## Install other packages in regular fashion 30 | && install2.r --error BiocManager \ 31 | && install2.r --error \ 32 | --deps TRUE \ 33 | --skipinstalled \ 34 | tidyverse \ 35 | dplyr \ 36 | devtools \ 37 | formatR \ 38 | #remotes \ 39 | selectr \ 40 | caTools \ 41 | ## Clean up 42 | && rm -rf /tmp/* \ 43 | && rm -rf /var/lib/apt/lists/* 44 | 45 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 46 | USER ${NB_USER} 47 | -------------------------------------------------------------------------------- /tidyverse/4.1.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.1.1 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | USER root 6 | 7 | RUN apt-get update \ 8 | && apt-get -y install --no-install-recommends \ 9 | #libxml2-dev \ 10 | #libcairo2-dev \ 11 | libfribidi-dev \ 12 | libgit2-dev \ 13 | libharfbuzz-dev \ 14 | libsqlite3-dev \ 15 | libmariadbd-dev \ 16 | libpq-dev \ 17 | libssh2-1-dev \ 18 | unixodbc-dev \ 19 | libsasl2-dev \ 20 | libtiff-dev \ 21 | && install2.r --error BiocManager \ 22 | && install2.r --error \ 23 | --deps TRUE \ 24 | --skipinstalled \ 25 | tidyverse \ 26 | dplyr \ 27 | devtools \ 28 | formatR \ 29 | #remotes \ 30 | selectr \ 31 | caTools \ 32 | ## Clean up 33 | && rm -rf /tmp/* \ 34 | && rm -rf /var/lib/apt/lists/* 35 | 36 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 37 | USER ${NB_USER} 38 | -------------------------------------------------------------------------------- /tidyverse/4.1.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.1.2 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | USER root 8 | 9 | RUN apt-get update \ 10 | && apt-get -y install --no-install-recommends \ 11 | cmake \ 12 | #libxml2-dev \ 13 | #libcairo2-dev \ 14 | libfribidi-dev \ 15 | libgit2-dev \ 16 | libharfbuzz-dev \ 17 | libmariadb-dev \ 18 | libpq-dev \ 19 | libsasl2-dev \ 20 | libsqlite3-dev \ 21 | libssh2-1-dev \ 22 | libtiff-dev \ 23 | libxtst6 \ 24 | unixodbc-dev \ 25 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 26 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 27 | tidyverse \ 28 | dplyr \ 29 | devtools \ 30 | formatR \ 31 | ## dplyr database backends 32 | && Rscript -e "devtools::install_version('duckdb', version = '0.3.1', Ncpus = Sys.getenv('NCPUS'))" \ 33 | && install2.r --error --skipinstalled -n $NCPUS \ 34 | arrow \ 35 | fst \ 36 | ## Clean up 37 | && rm -rf /tmp/* \ 38 | && rm -rf /var/lib/apt/lists/* 39 | 40 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 41 | USER ${NB_USER} 42 | -------------------------------------------------------------------------------- /tidyverse/4.1.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/r-ver:4.1.3 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | USER root 8 | 9 | RUN apt-get update \ 10 | && apt-get -y install --no-install-recommends \ 11 | cmake \ 12 | #libxml2-dev \ 13 | #libcairo2-dev \ 14 | libfribidi-dev \ 15 | libgit2-dev \ 16 | libharfbuzz-dev \ 17 | libmariadb-dev \ 18 | libpq-dev \ 19 | libsasl2-dev \ 20 | libsqlite3-dev \ 21 | libssh2-1-dev \ 22 | libtiff-dev \ 23 | libxtst6 \ 24 | unixodbc-dev \ 25 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 26 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 27 | tidyverse \ 28 | dplyr \ 29 | devtools \ 30 | formatR \ 31 | ## dplyr database backends 32 | && if [ $(dpkg --print-architecture) = "arm64" ]; then \ 33 | ## https://github.com/duckdb/duckdb/issues/3049 34 | cp -a $(R RHOME)/etc/Makeconf $(R RHOME)/etc/Makeconf.bak; \ 35 | sed -i 's/fpic/fPIC/g' $(R RHOME)/etc/Makeconf; \ 36 | install2.r --error --skipinstalled -n $NCPUS duckdb; \ 37 | mv $(R RHOME)/etc/Makeconf.bak $(R RHOME)/etc/Makeconf; \ 38 | else \ 39 | install2.r --error --skipinstalled -n $NCPUS duckdb; \ 40 | fi \ 41 | && install2.r --error --skipinstalled -n $NCPUS \ 42 | arrow \ 43 | fst \ 44 | ## Clean up 45 | && rm -rf /tmp/* \ 46 | && rm -rf /var/lib/apt/lists/* 47 | 48 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 49 | USER ${NB_USER} 50 | -------------------------------------------------------------------------------- /tidyverse/4.2.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG R_VERSION=4.2.0 2 | 3 | FROM registry.gitlab.b-data.ch/jupyterlab/r/base:${R_VERSION} 4 | 5 | ARG NCPUS=1 6 | 7 | ARG DEBIAN_FRONTEND=noninteractive 8 | 9 | USER root 10 | 11 | RUN apt-get update \ 12 | && apt-get -y install --no-install-recommends \ 13 | cmake \ 14 | #libxml2-dev \ 15 | #libcairo2-dev \ 16 | libfribidi-dev \ 17 | libgit2-dev \ 18 | libharfbuzz-dev \ 19 | libmariadb-dev \ 20 | libpq-dev \ 21 | libsasl2-dev \ 22 | libsqlite3-dev \ 23 | libssh2-1-dev \ 24 | libtiff-dev \ 25 | libxtst6 \ 26 | unixodbc-dev \ 27 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 28 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 29 | tidyverse \ 30 | dplyr \ 31 | devtools \ 32 | formatR \ 33 | ## dplyr database backends 34 | && install2.r --error --skipinstalled -n $NCPUS \ 35 | arrow \ 36 | duckdb \ 37 | fst \ 38 | ## Clean up 39 | && rm -rf /tmp/* \ 40 | && rm -rf /var/lib/apt/lists/* 41 | 42 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 43 | USER ${NB_USER} 44 | -------------------------------------------------------------------------------- /tidyverse/4.2.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=registry.gitlab.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.2.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | USER root 11 | 12 | RUN apt-get update \ 13 | && apt-get -y install --no-install-recommends \ 14 | cmake \ 15 | #libxml2-dev \ 16 | #libcairo2-dev \ 17 | libfribidi-dev \ 18 | libgit2-dev \ 19 | libharfbuzz-dev \ 20 | libmariadb-dev \ 21 | libpq-dev \ 22 | libsasl2-dev \ 23 | libsqlite3-dev \ 24 | libssh2-1-dev \ 25 | libtiff-dev \ 26 | libxtst6 \ 27 | unixodbc-dev \ 28 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 29 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 30 | tidyverse \ 31 | dplyr \ 32 | devtools \ 33 | formatR \ 34 | ## dplyr database backends 35 | && install2.r --error --skipinstalled -n $NCPUS \ 36 | arrow \ 37 | duckdb \ 38 | fst \ 39 | ## Clean up 40 | && rm -rf /tmp/* \ 41 | && rm -rf /var/lib/apt/lists/* 42 | 43 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 44 | USER ${NB_USER} 45 | -------------------------------------------------------------------------------- /tidyverse/4.2.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.2.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Clean up 49 | && rm -rf /tmp/* \ 50 | && rm -rf /var/lib/apt/lists/* 51 | 52 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 53 | USER ${NB_USER} 54 | -------------------------------------------------------------------------------- /tidyverse/4.2.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.2.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Clean up 49 | && rm -rf /tmp/* \ 50 | && rm -rf /var/lib/apt/lists/* 51 | 52 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 53 | USER ${NB_USER} 54 | -------------------------------------------------------------------------------- /tidyverse/4.3.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.3.0 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Clean up 49 | && rm -rf /tmp/* \ 50 | && rm -rf /var/lib/apt/lists/* 51 | 52 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 53 | USER ${NB_USER} 54 | -------------------------------------------------------------------------------- /tidyverse/4.3.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.3.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from PPM 49 | && strip $(R RHOME)/site-library/*/libs/*.so \ 50 | ## Clean up 51 | && rm -rf /tmp/* \ 52 | && rm -rf /var/lib/apt/lists/* 53 | 54 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 55 | USER ${NB_USER} 56 | -------------------------------------------------------------------------------- /tidyverse/4.3.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.3.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from PPM 49 | && strip $(R RHOME)/site-library/*/libs/*.so \ 50 | ## Clean up 51 | && rm -rf /tmp/* \ 52 | && rm -rf /var/lib/apt/lists/* 53 | 54 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 55 | USER ${NB_USER} 56 | -------------------------------------------------------------------------------- /tidyverse/4.3.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.3.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from PPPM 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /tidyverse/4.4.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.4.0 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from P3M 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /tidyverse/4.4.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.4.1 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | #libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from P3M 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /tidyverse/4.4.2.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.4.2 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | #libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from P3M 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /tidyverse/4.4.3.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION=4.4.3 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | #libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from P3M 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /tidyverse/latest.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=glcr.b-data.ch/jupyterlab/r/base 2 | ARG R_VERSION 3 | 4 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 5 | 6 | ARG NCPUS=1 7 | 8 | ARG DEBIAN_FRONTEND=noninteractive 9 | 10 | ARG BUILD_ON_IMAGE 11 | ARG BUILD_START 12 | 13 | ENV PARENT_IMAGE=${BUILD_ON_IMAGE}:${R_VERSION} \ 14 | BUILD_DATE=${BUILD_START} 15 | 16 | USER root 17 | 18 | RUN apt-get update \ 19 | && apt-get -y install --no-install-recommends \ 20 | cmake \ 21 | default-libmysqlclient-dev \ 22 | #libxml2-dev \ 23 | libfribidi-dev \ 24 | libgit2-dev \ 25 | libharfbuzz-dev \ 26 | libpq-dev \ 27 | libsasl2-dev \ 28 | libsqlite3-dev \ 29 | libssh2-1-dev \ 30 | #libtiff-dev \ 31 | libxtst6 \ 32 | unixodbc-dev \ 33 | && install2.r --error --skipinstalled -n $NCPUS BiocManager \ 34 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 35 | tidyverse \ 36 | dplyr \ 37 | devtools \ 38 | formatR \ 39 | ## dplyr database backends 40 | && install2.r --error --skipinstalled -n $NCPUS \ 41 | arrow \ 42 | duckdb \ 43 | fst \ 44 | ## Get rid of libharfbuzz-dev and its dependencies (incl. python3) 45 | && apt-get -y purge libharfbuzz-dev \ 46 | && apt-get -y autoremove \ 47 | && apt-get -y install --no-install-recommends libharfbuzz-icu0 \ 48 | ## Strip libraries of binary packages installed from P3M 49 | && RLS=$(Rscript -e "cat(Sys.getenv('R_LIBS_SITE'))") \ 50 | && strip ${RLS}/*/libs/*.so \ 51 | ## Clean up 52 | && rm -rf /tmp/* \ 53 | && rm -rf /var/lib/apt/lists/* 54 | 55 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 56 | USER ${NB_USER} 57 | -------------------------------------------------------------------------------- /verse/3.6.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:3.6.2 2 | 3 | # Version-stable CTAN repo from the tlnet archive at texlive.info, used in the 4 | # TinyTeX installation: chosen as the frozen snapshot of the TeXLive release 5 | # shipped for the base Debian image of a given rocker/r-ver tag. 6 | # Debian buster => TeXLive 2018, frozen release snapshot 2019/02/27 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2019/02/27/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=$PATH:/opt/TinyTeX/bin/x86_64-linux/ \ 13 | HOME=/root 14 | 15 | WORKDIR ${HOME} 16 | 17 | ## Add LaTeX, rticles and bookdown support 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | ## for rJava 21 | default-jdk \ 22 | ## Nice Google fonts 23 | fonts-roboto \ 24 | ## used by some base R plots 25 | ghostscript \ 26 | ## used to build rJava and other packages 27 | libbz2-dev \ 28 | #libicu-dev \ 29 | liblzma-dev \ 30 | ## system dependency of hunspell (devtools) 31 | libhunspell-dev \ 32 | ## system dependency of hadley/pkgdown 33 | libmagick++-dev \ 34 | ## rdf, for redland / linked data 35 | librdf0-dev \ 36 | ## for V8-based javascript wrappers 37 | libv8-dev \ 38 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 39 | qpdf \ 40 | ## For building PDF manuals 41 | texinfo \ 42 | ## for git via ssh key 43 | #ssh \ 44 | ## just because 45 | #less \ 46 | #vim \ 47 | ## parallelization 48 | #libzmq3-dev \ 49 | libopenmpi-dev \ 50 | && apt-get clean \ 51 | && rm -rf /var/lib/apt/lists/* \ 52 | ## Use tinytex for LaTeX installation 53 | #&& install2.r --error tinytex \ 54 | ## Tell APT about the TeX Live installation 55 | ## by building a dummy package using equivs 56 | && apt-get install -y --no-install-recommends equivs \ 57 | && cd /tmp \ 58 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 59 | && equivs-build debian-* \ 60 | && mv texlive-local*.deb texlive-local.deb \ 61 | && dpkg -i texlive-local.deb \ 62 | && apt-get -y purge equivs \ 63 | && apt-get -y autoremove \ 64 | ## Admin-based install of TinyTeX: 65 | && wget -qO- \ 66 | "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \ 67 | sh -s - --admin --no-path \ 68 | && mv ~/.TinyTeX /opt/TinyTeX \ 69 | && if /opt/TinyTeX/bin/*/tex -v | grep -q 'TeX Live 2018'; then \ 70 | ## Patch the Perl modules in the frozen TeX Live 2018 snapshot with the newer 71 | ## version available for the installer in tlnet/tlpkg/TeXLive, to include the 72 | ## fix described in https://github.com/yihui/tinytex/issues/77#issuecomment-466584510 73 | ## as discussed in https://www.preining.info/blog/2019/09/tex-services-at-texlive-info/#comments 74 | wget -P /tmp/ ${CTAN_REPO}/install-tl-unx.tar.gz \ 75 | && tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/ \ 76 | && cp -Tr /tmp/install-tl-*/tlpkg/TeXLive /opt/TinyTeX/tlpkg/TeXLive \ 77 | && rm -r /tmp/install-tl-*; \ 78 | fi \ 79 | && /opt/TinyTeX/bin/*/tlmgr path add \ 80 | && tlmgr install ae inconsolata listings metafont mfware parskip pdfcrop tex xcolor \ 81 | && tlmgr path add \ 82 | && Rscript -e "tinytex::r_texmf()" \ 83 | && chown -R root:users /opt/TinyTeX \ 84 | && chmod -R g+w /opt/TinyTeX \ 85 | && chmod -R g+wx /opt/TinyTeX/bin \ 86 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 87 | && install2.r --error PKI \ 88 | ## And some nice R packages for publishing-related stuff 89 | && install2.r --error --deps TRUE \ 90 | bookdown rticles rmdshower rJava \ 91 | ## Install Node.js 92 | && curl -sL https://deb.nodesource.com/setup_12.x | bash \ 93 | && DEPS="libpython-stdlib \ 94 | libpython2-stdlib \ 95 | libpython2.7-minimal \ 96 | libpython2.7-stdlib \ 97 | python \ 98 | python-minimal \ 99 | python2 python2-minimal \ 100 | python2.7 \ 101 | python2.7-minimal" \ 102 | && apt-get install -y --no-install-recommends nodejs $DEPS \ 103 | ## Install code-server extensions 104 | && cd /tmp \ 105 | && curl -sL https://marketplace.visualstudio.com/_apis/public/gallery/publishers/James-Yu/vsextensions/latex-workshop/8.7.2/vspackage -o James-Yu.latex-workshop-8.7.2.vsix.gz \ 106 | && gunzip James-Yu.latex-workshop-8.7.2.vsix.gz \ 107 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.7.2.vsix \ 108 | ## Needed to get LaTeX Workshop to work (Broken extension? https://github.com/cdr/code-server/issues/1187) 109 | && cd /opt/code-server/extensions/james-yu.latex-workshop-8.7.2 \ 110 | && npm install \ 111 | ## Clean up (Node.js) 112 | && rm -rf /tmp/* \ 113 | && apt-get remove --purge -y nodejs $DEPS \ 114 | && apt-get autoremove -y \ 115 | && apt-get autoclean -y \ 116 | && rm -rf /var/lib/apt/lists/* \ 117 | /root/.cache \ 118 | /root/.config \ 119 | /root/.local \ 120 | /root/.npm 121 | # 122 | ## Consider including: 123 | # - yihui/printr R package (when released to CRAN) 124 | # - libgsl0-dev (GSL math library dependencies) 125 | 126 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 127 | USER ${NB_USER} 128 | 129 | ENV HOME=/home/${NB_USER} 130 | 131 | WORKDIR ${HOME} 132 | -------------------------------------------------------------------------------- /verse/4.0.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.0 2 | 3 | # Version-stable CTAN repo from the tlnet archive at texlive.info, used in the 4 | # TinyTeX installation: chosen as the frozen snapshot of the TeXLive release 5 | # shipped for the base Debian image of a given rocker/r-ver tag. 6 | # Debian buster => TeXLive 2018, frozen release snapshot 2019/02/27 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2019/02/27/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=$PATH:/opt/TinyTeX/bin/x86_64-linux/ \ 13 | HOME=/root 14 | COPY vsix/* /tmp/ 15 | 16 | WORKDIR ${HOME} 17 | 18 | ## Add LaTeX, rticles and bookdown support 19 | RUN apt-get update \ 20 | && apt-get install -y --no-install-recommends \ 21 | ## for rJava 22 | default-jdk \ 23 | ## Nice Google fonts 24 | fonts-roboto \ 25 | ## used by some base R plots 26 | ghostscript \ 27 | ## used to build rJava and other packages 28 | libbz2-dev \ 29 | libicu-dev \ 30 | liblzma-dev \ 31 | libpcre2-dev \ 32 | ## system dependency of hunspell (devtools) 33 | libhunspell-dev \ 34 | ## system dependency of hadley/pkgdown 35 | libmagick++-dev \ 36 | ## rdf, for redland / linked data 37 | librdf0-dev \ 38 | ## for V8-based javascript wrappers 39 | libv8-dev \ 40 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 41 | qpdf \ 42 | ## For building PDF manuals 43 | texinfo \ 44 | ## for git via ssh key 45 | #ssh \ 46 | ## just because 47 | #less \ 48 | #vim \ 49 | ## parallelization 50 | #libzmq3-dev \ 51 | libopenmpi-dev \ 52 | && apt-get clean \ 53 | && rm -rf /var/lib/apt/lists/* \ 54 | ## Use tinytex for LaTeX installation 55 | #&& install2.r --error tinytex \ 56 | ## Tell APT about the TeX Live installation 57 | ## by building a dummy package using equivs 58 | && apt-get install -y --no-install-recommends equivs \ 59 | && cd /tmp \ 60 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 61 | && equivs-build debian-* \ 62 | && mv texlive-local*.deb texlive-local.deb \ 63 | && dpkg -i texlive-local.deb \ 64 | && apt-get -y purge equivs \ 65 | && apt-get -y autoremove \ 66 | ## Admin-based install of TinyTeX: 67 | && wget -qO- \ 68 | "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \ 69 | sh -s - --admin --no-path \ 70 | && mv ~/.TinyTeX /opt/TinyTeX \ 71 | && if /opt/TinyTeX/bin/*/tex -v | grep -q 'TeX Live 2018'; then \ 72 | ## Patch the Perl modules in the frozen TeX Live 2018 snapshot with the newer 73 | ## version available for the installer in tlnet/tlpkg/TeXLive, to include the 74 | ## fix described in https://github.com/yihui/tinytex/issues/77#issuecomment-466584510 75 | ## as discussed in https://www.preining.info/blog/2019/09/tex-services-at-texlive-info/#comments 76 | wget -P /tmp/ ${CTAN_REPO}/install-tl-unx.tar.gz \ 77 | && tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/ \ 78 | && cp -Tr /tmp/install-tl-*/tlpkg/TeXLive /opt/TinyTeX/tlpkg/TeXLive \ 79 | && rm -r /tmp/install-tl-*; \ 80 | fi \ 81 | && /opt/TinyTeX/bin/*/tlmgr path add \ 82 | && tlmgr install ae inconsolata listings metafont mfware parskip pdfcrop tex xcolor \ 83 | && tlmgr path add \ 84 | && Rscript -e "tinytex::r_texmf()" \ 85 | && chown -R root:users /opt/TinyTeX \ 86 | && chmod -R g+w /opt/TinyTeX \ 87 | && chmod -R g+wx /opt/TinyTeX/bin \ 88 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 89 | && install2.r --error PKI \ 90 | ## And some nice R packages for publishing-related stuff 91 | && install2.r --error --deps TRUE \ 92 | bookdown rticles rmdshower rJava \ 93 | ## Install Node.js 94 | && curl -sL https://deb.nodesource.com/setup_12.x | bash \ 95 | && DEPS="libpython-stdlib \ 96 | libpython2-stdlib \ 97 | libpython2.7-minimal \ 98 | libpython2.7-stdlib \ 99 | python \ 100 | python-minimal \ 101 | python2 python2-minimal \ 102 | python2.7 \ 103 | python2.7-minimal" \ 104 | && apt-get install -y --no-install-recommends nodejs $DEPS \ 105 | ## Install code-server extensions 106 | && cd /tmp \ 107 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.9.0.vsix \ 108 | ## Needed to get LaTeX Workshop to work (Broken extension? https://github.com/cdr/code-server/issues/1187) 109 | && cd /opt/code-server/extensions/james-yu.latex-workshop-8.9.0 \ 110 | && npm install \ 111 | ## Clean up (Node.js) 112 | && rm -rf /tmp/* \ 113 | && apt-get remove --purge -y nodejs $DEPS \ 114 | && apt-get autoremove -y \ 115 | && apt-get autoclean -y \ 116 | && rm -rf /var/lib/apt/lists/* \ 117 | /root/.cache \ 118 | /root/.config \ 119 | /root/.local \ 120 | /root/.npm 121 | # 122 | ## Consider including: 123 | # - yihui/printr R package (when released to CRAN) 124 | # - libgsl0-dev (GSL math library dependencies) 125 | 126 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 127 | USER ${NB_USER} 128 | 129 | ENV HOME=/home/${NB_USER} 130 | 131 | WORKDIR ${HOME} 132 | -------------------------------------------------------------------------------- /verse/4.0.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.1 2 | 3 | # Version-stable CTAN repo from the tlnet archive at texlive.info, used in the 4 | # TinyTeX installation: chosen as the frozen snapshot of the TeXLive release 5 | # shipped for the base Debian image of a given rocker/r-ver tag. 6 | # Debian buster => TeXLive 2018, frozen release snapshot 2019/02/27 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2019/02/27/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=$PATH:/opt/TinyTeX/bin/x86_64-linux/ \ 13 | HOME=/root 14 | COPY vsix/* /tmp/ 15 | 16 | WORKDIR ${HOME} 17 | 18 | ## Add LaTeX, rticles and bookdown support 19 | RUN apt-get update \ 20 | && apt-get install -y --no-install-recommends \ 21 | ## for rJava 22 | default-jdk \ 23 | ## Nice Google fonts 24 | fonts-roboto \ 25 | ## used by some base R plots 26 | ghostscript \ 27 | ## used to build rJava and other packages 28 | libbz2-dev \ 29 | libicu-dev \ 30 | liblzma-dev \ 31 | libpcre2-dev \ 32 | ## system dependency of hunspell (devtools) 33 | libhunspell-dev \ 34 | ## system dependency of hadley/pkgdown 35 | libmagick++-dev \ 36 | ## rdf, for redland / linked data 37 | librdf0-dev \ 38 | ## for V8-based javascript wrappers 39 | libnode-dev \ 40 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 41 | qpdf \ 42 | ## For building PDF manuals 43 | texinfo \ 44 | ## for git via ssh key 45 | #ssh \ 46 | ## just because 47 | #less \ 48 | #vim \ 49 | ## parallelization 50 | #libzmq3-dev \ 51 | libopenmpi-dev \ 52 | && apt-get clean \ 53 | && rm -rf /var/lib/apt/lists/* \ 54 | ## Use tinytex for LaTeX installation 55 | #&& install2.r --error tinytex \ 56 | ## Tell APT about the TeX Live installation 57 | ## by building a dummy package using equivs 58 | && apt-get install -y --no-install-recommends equivs \ 59 | && cd /tmp \ 60 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 61 | && equivs-build debian-* \ 62 | && mv texlive-local*.deb texlive-local.deb \ 63 | && dpkg -i texlive-local.deb \ 64 | && apt-get -y purge equivs \ 65 | && apt-get -y autoremove \ 66 | ## Admin-based install of TinyTeX: 67 | && wget -qO- \ 68 | "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \ 69 | sh -s - --admin --no-path \ 70 | && mv ~/.TinyTeX /opt/TinyTeX \ 71 | && if /opt/TinyTeX/bin/*/tex -v | grep -q 'TeX Live 2018'; then \ 72 | ## Patch the Perl modules in the frozen TeX Live 2018 snapshot with the newer 73 | ## version available for the installer in tlnet/tlpkg/TeXLive, to include the 74 | ## fix described in https://github.com/yihui/tinytex/issues/77#issuecomment-466584510 75 | ## as discussed in https://www.preining.info/blog/2019/09/tex-services-at-texlive-info/#comments 76 | wget -P /tmp/ ${CTAN_REPO}/install-tl-unx.tar.gz \ 77 | && tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/ \ 78 | && cp -Tr /tmp/install-tl-*/tlpkg/TeXLive /opt/TinyTeX/tlpkg/TeXLive \ 79 | && rm -r /tmp/install-tl-*; \ 80 | fi \ 81 | && /opt/TinyTeX/bin/*/tlmgr path add \ 82 | && tlmgr install ae inconsolata listings metafont mfware parskip pdfcrop tex xcolor \ 83 | && tlmgr path add \ 84 | && Rscript -e "tinytex::r_texmf()" \ 85 | && chown -R root:users /opt/TinyTeX \ 86 | && chmod -R g+w /opt/TinyTeX \ 87 | && chmod -R g+wx /opt/TinyTeX/bin \ 88 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 89 | && install2.r --error PKI \ 90 | ## And some nice R packages for publishing-related stuff 91 | && install2.r --error --deps TRUE \ 92 | bookdown rticles rmdshower rJava \ 93 | ## Install code-server extensions 94 | && cd /tmp \ 95 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.10.0.vsix \ 96 | ## Clean up 97 | && rm -rf /tmp/* 98 | # 99 | ## Consider including: 100 | # - yihui/printr R package (when released to CRAN) 101 | # - libgsl0-dev (GSL math library dependencies) 102 | 103 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 104 | USER ${NB_USER} 105 | 106 | ENV HOME=/home/${NB_USER} 107 | 108 | WORKDIR ${HOME} 109 | -------------------------------------------------------------------------------- /verse/4.0.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.2 2 | 3 | # Version-stable CTAN repo from the tlnet archive at texlive.info, used in the 4 | # TinyTeX installation: chosen as the frozen snapshot of the TeXLive release 5 | # shipped for the base Debian image of a given rocker/r-ver tag. 6 | # Debian buster => TeXLive 2018, frozen release snapshot 2019/02/27 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2019/02/27/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=$PATH:/opt/TinyTeX/bin/x86_64-linux/ \ 13 | HOME=/root 14 | 15 | WORKDIR ${HOME} 16 | 17 | ## Add LaTeX, rticles and bookdown support 18 | RUN apt-get update \ 19 | && apt-get install -y --no-install-recommends \ 20 | ## for rJava 21 | default-jdk \ 22 | ## Nice Google fonts 23 | fonts-roboto \ 24 | ## used by some base R plots 25 | ghostscript \ 26 | ## used to build rJava and other packages 27 | libbz2-dev \ 28 | libicu-dev \ 29 | liblzma-dev \ 30 | libpcre2-dev \ 31 | ## system dependency of hunspell (devtools) 32 | libhunspell-dev \ 33 | ## system dependency of hadley/pkgdown 34 | libmagick++-dev \ 35 | ## system dependency of pdftools 36 | libpoppler-cpp-dev \ 37 | ## rdf, for redland / linked data 38 | librdf0-dev \ 39 | ## for V8-based javascript wrappers 40 | libnode-dev \ 41 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 42 | qpdf \ 43 | ## For building PDF manuals 44 | texinfo \ 45 | ## for git via ssh key 46 | #ssh \ 47 | ## just because 48 | #less \ 49 | #vim \ 50 | ## parallelization 51 | #libzmq3-dev \ 52 | libopenmpi-dev \ 53 | && apt-get clean \ 54 | && rm -rf /var/lib/apt/lists/* \ 55 | ## Use tinytex for LaTeX installation 56 | #&& install2.r --error tinytex \ 57 | ## Tell APT about the TeX Live installation 58 | ## by building a dummy package using equivs 59 | && apt-get install -y --no-install-recommends equivs \ 60 | && cd /tmp \ 61 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 62 | && equivs-build debian-* \ 63 | && mv texlive-local*.deb texlive-local.deb \ 64 | && dpkg -i texlive-local.deb \ 65 | && apt-get -y purge equivs \ 66 | && apt-get -y autoremove \ 67 | ## Admin-based install of TinyTeX: 68 | && wget -qO- \ 69 | "https://github.com/yihui/tinytex/raw/master/tools/install-unx.sh" | \ 70 | sh -s - --admin --no-path \ 71 | && mv ~/.TinyTeX /opt/TinyTeX \ 72 | && if /opt/TinyTeX/bin/*/tex -v | grep -q 'TeX Live 2018'; then \ 73 | ## Patch the Perl modules in the frozen TeX Live 2018 snapshot with the newer 74 | ## version available for the installer in tlnet/tlpkg/TeXLive, to include the 75 | ## fix described in https://github.com/yihui/tinytex/issues/77#issuecomment-466584510 76 | ## as discussed in https://www.preining.info/blog/2019/09/tex-services-at-texlive-info/#comments 77 | wget -P /tmp/ ${CTAN_REPO}/install-tl-unx.tar.gz \ 78 | && tar -xzf /tmp/install-tl-unx.tar.gz -C /tmp/ \ 79 | && cp -Tr /tmp/install-tl-*/tlpkg/TeXLive /opt/TinyTeX/tlpkg/TeXLive \ 80 | && rm -r /tmp/install-tl-*; \ 81 | fi \ 82 | && /opt/TinyTeX/bin/*/tlmgr path add \ 83 | && tlmgr install \ 84 | ae \ 85 | graphics \ 86 | graphics-def \ 87 | ifluatex \ 88 | ifxetex \ 89 | inconsolata \ 90 | listings \ 91 | metafont \ 92 | mfware \ 93 | oberdiek \ 94 | parskip \ 95 | pdfcrop \ 96 | tex \ 97 | xcolor \ 98 | && tlmgr path add \ 99 | && Rscript -e "tinytex::r_texmf()" \ 100 | && chown -R root:users /opt/TinyTeX \ 101 | && chmod -R g+w /opt/TinyTeX \ 102 | && chmod -R g+wx /opt/TinyTeX/bin \ 103 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 104 | && install2.r --error PKI \ 105 | ## And some nice R packages for publishing-related stuff 106 | && install2.r --error --deps TRUE \ 107 | bookdown rticles rmdshower rJava \ 108 | ## Install code-server extensions 109 | && cd /tmp \ 110 | && curl -sLO https://dl.b-data.ch/vsix/James-Yu.latex-workshop-8.11.1.vsix \ 111 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.11.1.vsix \ 112 | ## Clean up 113 | && rm -rf /tmp/* 114 | # 115 | ## Consider including: 116 | # - yihui/printr R package (when released to CRAN) 117 | # - libgsl0-dev (GSL math library dependencies) 118 | 119 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 120 | USER ${NB_USER} 121 | 122 | ENV HOME=/home/${NB_USER} 123 | 124 | WORKDIR ${HOME} 125 | -------------------------------------------------------------------------------- /verse/4.0.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.3 2 | 3 | ARG CTAN_REPO=${CTAN_REPO:-http://mirror.ctan.org/systems/texlive/tlnet} 4 | ENV CTAN_REPO=${CTAN_REPO} 5 | 6 | USER root 7 | 8 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 9 | HOME=/root 10 | 11 | WORKDIR ${HOME} 12 | 13 | ## Add LaTeX, rticles and bookdown support 14 | RUN apt-get update \ 15 | && apt-get install -y --no-install-recommends \ 16 | ## for rJava 17 | default-jdk \ 18 | ## Nice Google fonts 19 | fonts-roboto \ 20 | ## used by some base R plots 21 | ghostscript \ 22 | ## used to install PhantomJS 23 | lbzip2 \ 24 | ## used to build rJava and other packages 25 | libbz2-dev \ 26 | libicu-dev \ 27 | liblzma-dev \ 28 | libpcre2-dev \ 29 | ## system dependency of hunspell (devtools) 30 | libhunspell-dev \ 31 | ## system dependency of hadley/pkgdown 32 | libmagick++-dev \ 33 | ## system dependency of pdftools 34 | libpoppler-cpp-dev \ 35 | ## rdf, for redland / linked data (depends on libcurl4-gnutls-dev) 36 | librdf0-dev \ 37 | ## for V8-based javascript wrappers 38 | libnode-dev \ 39 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 40 | qpdf \ 41 | ## For building PDF manuals 42 | texinfo \ 43 | ## for git via ssh key 44 | #ssh \ 45 | ## just because 46 | #less \ 47 | #vim \ 48 | ## parallelization 49 | #libzmq3-dev \ 50 | libopenmpi-dev \ 51 | ## Install R package redland 52 | && install2.r --error --skipinstalled redland \ 53 | ## Explicitly install runtime library sub-deps of librdf0-dev 54 | && apt-get install -y \ 55 | libcurl4-openssl-dev \ 56 | libxslt-dev \ 57 | librdf0 \ 58 | redland-utils \ 59 | rasqal-utils \ 60 | raptor2-utils \ 61 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 62 | && apt-get -y autoremove \ 63 | && apt-get clean \ 64 | && rm -rf /var/lib/apt/lists/* \ 65 | ## Tell APT about the TeX Live installation 66 | ## by building a dummy package using equivs 67 | && apt-get install -y --no-install-recommends equivs \ 68 | && cd /tmp \ 69 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 70 | && equivs-build debian-* \ 71 | && mv texlive-local*.deb texlive-local.deb \ 72 | && dpkg -i texlive-local.deb \ 73 | && apt-get -y purge equivs \ 74 | && apt-get -y autoremove \ 75 | ## Admin-based install of TinyTeX: 76 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 77 | | sh -s - --admin --no-path \ 78 | && mv ~/.TinyTeX /opt/TinyTeX \ 79 | && /opt/TinyTeX/bin/*/tlmgr path add \ 80 | && tlmgr update --self \ 81 | && tlmgr install \ 82 | ae \ 83 | context \ 84 | listings \ 85 | makeindex \ 86 | parskip \ 87 | pdfcrop \ 88 | && tlmgr path add \ 89 | && Rscript -e "tinytex::r_texmf()" \ 90 | && chown -R root:users /opt/TinyTeX \ 91 | && chmod -R g+w /opt/TinyTeX \ 92 | && chmod -R g+wx /opt/TinyTeX/bin \ 93 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 94 | && install2.r --error PKI \ 95 | ## And some nice R packages for publishing-related stuff 96 | && install2.r --error --deps TRUE \ 97 | blogdown bookdown rticles rmdshower rJava xaringan \ 98 | ## Install code-server extensions 99 | && cd /tmp \ 100 | && curl -sLO https://dl.b-data.ch/vsix/James-Yu.latex-workshop-8.15.0.vsix \ 101 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.15.0.vsix || true \ 102 | ## Clean up 103 | && rm -rf /tmp/* 104 | 105 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 106 | USER ${NB_USER} 107 | 108 | ENV HOME=/home/${NB_USER} 109 | 110 | WORKDIR ${HOME} 111 | -------------------------------------------------------------------------------- /verse/4.0.4.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.4 2 | 3 | ARG CTAN_REPO=${CTAN_REPO:-http://mirror.ctan.org/systems/texlive/tlnet} 4 | ENV CTAN_REPO=${CTAN_REPO} 5 | 6 | USER root 7 | 8 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 9 | HOME=/root 10 | 11 | WORKDIR ${HOME} 12 | 13 | ## Add LaTeX, rticles and bookdown support 14 | RUN apt-get update \ 15 | && apt-get install -y --no-install-recommends \ 16 | ## for rJava 17 | default-jdk \ 18 | ## Nice Google fonts 19 | fonts-roboto \ 20 | ## used by some base R plots 21 | ghostscript \ 22 | ## used to install PhantomJS 23 | lbzip2 \ 24 | ## used to build rJava and other packages 25 | libbz2-dev \ 26 | libicu-dev \ 27 | liblzma-dev \ 28 | libpcre2-dev \ 29 | ## system dependency of hunspell (devtools) 30 | libhunspell-dev \ 31 | ## system dependency of hadley/pkgdown 32 | libmagick++-dev \ 33 | ## system dependency of pdftools 34 | libpoppler-cpp-dev \ 35 | ## rdf, for redland / linked data (depends on libcurl4-gnutls-dev) 36 | librdf0-dev \ 37 | ## for V8-based javascript wrappers 38 | libnode-dev \ 39 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 40 | qpdf \ 41 | ## For building PDF manuals 42 | texinfo \ 43 | ## for git via ssh key 44 | #ssh \ 45 | ## just because 46 | #less \ 47 | #vim \ 48 | ## parallelization 49 | #libzmq3-dev \ 50 | libopenmpi-dev \ 51 | ## Install R package redland 52 | && install2.r --error --skipinstalled redland \ 53 | ## Explicitly install runtime library sub-deps of librdf0-dev 54 | && apt-get install -y \ 55 | libcurl4-openssl-dev \ 56 | libxslt-dev \ 57 | librdf0 \ 58 | redland-utils \ 59 | rasqal-utils \ 60 | raptor2-utils \ 61 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 62 | && apt-get -y autoremove \ 63 | && apt-get clean \ 64 | && rm -rf /var/lib/apt/lists/* \ 65 | ## Tell APT about the TeX Live installation 66 | ## by building a dummy package using equivs 67 | && apt-get install -y --no-install-recommends equivs \ 68 | && cd /tmp \ 69 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 70 | && equivs-build debian-* \ 71 | && mv texlive-local*.deb texlive-local.deb \ 72 | && dpkg -i texlive-local.deb \ 73 | && apt-get -y purge equivs \ 74 | && apt-get -y autoremove \ 75 | ## Admin-based install of TinyTeX: 76 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 77 | | sh -s - --admin --no-path \ 78 | && mv ~/.TinyTeX /opt/TinyTeX \ 79 | && /opt/TinyTeX/bin/*/tlmgr path add \ 80 | && tlmgr update --self \ 81 | && tlmgr install \ 82 | ae \ 83 | ## context fails to install on aarch64 with no output 84 | #context \ 85 | listings \ 86 | makeindex \ 87 | parskip \ 88 | pdfcrop \ 89 | && tlmgr path add \ 90 | && Rscript -e "tinytex::r_texmf()" \ 91 | && chown -R root:users /opt/TinyTeX \ 92 | && chmod -R g+w /opt/TinyTeX \ 93 | && chmod -R g+wx /opt/TinyTeX/bin \ 94 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 95 | && install2.r --error PKI \ 96 | ## And some nice R packages for publishing-related stuff 97 | && install2.r --error --deps TRUE \ 98 | blogdown bookdown rticles rmdshower rJava xaringan \ 99 | ## Install code-server extensions 100 | && cd /tmp \ 101 | && curl -sLO https://open-vsx.org/api/James-Yu/latex-workshop/8.16.1/file/James-Yu.latex-workshop-8.16.1.vsix \ 102 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.16.1.vsix \ 103 | ## Clean up 104 | && rm -rf /tmp/* 105 | 106 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 107 | USER ${NB_USER} 108 | 109 | ENV HOME=/home/${NB_USER} 110 | 111 | WORKDIR ${HOME} 112 | -------------------------------------------------------------------------------- /verse/4.0.5.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.0.5 2 | 3 | ARG CTAN_REPO=${CTAN_REPO:-http://mirror.ctan.org/systems/texlive/tlnet} 4 | ENV CTAN_REPO=${CTAN_REPO} 5 | 6 | USER root 7 | 8 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 9 | HOME=/root 10 | 11 | WORKDIR ${HOME} 12 | 13 | ## Add LaTeX, rticles and bookdown support 14 | RUN apt-get update \ 15 | && apt-get install -y --no-install-recommends \ 16 | ## for rJava 17 | default-jdk \ 18 | ## Nice Google fonts 19 | fonts-roboto \ 20 | ## used by some base R plots 21 | ghostscript \ 22 | ## used to install PhantomJS 23 | lbzip2 \ 24 | ## used to build rJava and other packages 25 | libbz2-dev \ 26 | libicu-dev \ 27 | liblzma-dev \ 28 | libpcre2-dev \ 29 | ## system dependency of hunspell (devtools) 30 | libhunspell-dev \ 31 | ## system dependency of hadley/pkgdown 32 | libmagick++-dev \ 33 | ## system dependency of pdftools 34 | libpoppler-cpp-dev \ 35 | ## rdf, for redland / linked data (depends on libcurl4-gnutls-dev) 36 | librdf0-dev \ 37 | ## for V8-based javascript wrappers 38 | libnode-dev \ 39 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 40 | qpdf \ 41 | ## For building PDF manuals 42 | texinfo \ 43 | ## for git via ssh key 44 | #ssh \ 45 | ## just because 46 | #less \ 47 | #vim \ 48 | ## parallelization 49 | #libzmq3-dev \ 50 | libopenmpi-dev \ 51 | ## Install R package redland 52 | && install2.r --error --skipinstalled redland \ 53 | ## Explicitly install runtime library sub-deps of librdf0-dev 54 | && apt-get install -y \ 55 | libcurl4-openssl-dev \ 56 | libxslt-dev \ 57 | librdf0 \ 58 | redland-utils \ 59 | rasqal-utils \ 60 | raptor2-utils \ 61 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 62 | && apt-get -y autoremove \ 63 | && apt-get clean \ 64 | && rm -rf /var/lib/apt/lists/* \ 65 | ## Tell APT about the TeX Live installation 66 | ## by building a dummy package using equivs 67 | && apt-get install -y --no-install-recommends equivs \ 68 | && cd /tmp \ 69 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 70 | && equivs-build debian-* \ 71 | && mv texlive-local*.deb texlive-local.deb \ 72 | && dpkg -i texlive-local.deb \ 73 | && apt-get -y purge equivs \ 74 | && apt-get -y autoremove \ 75 | ## Admin-based install of TinyTeX: 76 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 77 | | sh -s - --admin --no-path \ 78 | && mv ~/.TinyTeX /opt/TinyTeX \ 79 | && /opt/TinyTeX/bin/*/tlmgr path add \ 80 | && tlmgr update --self \ 81 | && tlmgr install \ 82 | ae \ 83 | ## context fails to install on aarch64 with no output 84 | #context \ 85 | listings \ 86 | makeindex \ 87 | parskip \ 88 | pdfcrop \ 89 | && tlmgr path add \ 90 | && Rscript -e "tinytex::r_texmf()" \ 91 | && chown -R root:users /opt/TinyTeX \ 92 | && chmod -R g+w /opt/TinyTeX \ 93 | && chmod -R g+wx /opt/TinyTeX/bin \ 94 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 95 | && install2.r --error PKI \ 96 | ## And some nice R packages for publishing-related stuff 97 | && install2.r --error --deps TRUE \ 98 | blogdown bookdown rticles rmdshower rJava xaringan \ 99 | ## Install code-server extensions 100 | && cd /tmp \ 101 | && curl -sLO https://open-vsx.org/api/James-Yu/latex-workshop/8.18.0/file/James-Yu.latex-workshop-8.18.0.vsix \ 102 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.18.0.vsix \ 103 | ## Clean up 104 | && rm -rf /tmp/* 105 | 106 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 107 | USER ${NB_USER} 108 | 109 | ENV HOME=/home/${NB_USER} 110 | 111 | WORKDIR ${HOME} 112 | -------------------------------------------------------------------------------- /verse/4.1.0.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.1.0 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | ARG CTAN_REPO=${CTAN_REPO:-http://mirror.ctan.org/systems/texlive/tlnet} 6 | ENV CTAN_REPO=${CTAN_REPO} 7 | 8 | USER root 9 | 10 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 11 | HOME=/root 12 | 13 | WORKDIR ${HOME} 14 | 15 | ## Add LaTeX, rticles and bookdown support 16 | RUN apt-get update \ 17 | && apt-get install -y --no-install-recommends \ 18 | ## for rJava 19 | default-jdk \ 20 | ## Nice Google fonts 21 | fonts-roboto \ 22 | ## used by some base R plots 23 | ghostscript \ 24 | ## used to install PhantomJS 25 | lbzip2 \ 26 | ## used to build rJava and other packages 27 | libbz2-dev \ 28 | libicu-dev \ 29 | liblzma-dev \ 30 | libpcre2-dev \ 31 | ## system dependency of hunspell (devtools) 32 | libhunspell-dev \ 33 | ## system dependency of hadley/pkgdown 34 | libmagick++-dev \ 35 | ## system dependency of pdftools 36 | libpoppler-cpp-dev \ 37 | ## rdf, for redland / linked data (depends on libcurl4-gnutls-dev) 38 | librdf0-dev \ 39 | ## for V8-based javascript wrappers 40 | libnode-dev \ 41 | ## R CMD Check wants qpdf to check pdf sizes, or throws a Warning 42 | qpdf \ 43 | ## For building PDF manuals 44 | texinfo \ 45 | ## for git via ssh key 46 | #ssh \ 47 | ## just because 48 | #less \ 49 | #vim \ 50 | ## parallelization 51 | #libzmq3-dev \ 52 | libopenmpi-dev \ 53 | ## Install R package redland 54 | && install2.r --error --skipinstalled redland \ 55 | ## Explicitly install runtime library sub-deps of librdf0-dev 56 | && apt-get install -y \ 57 | libcurl4-openssl-dev \ 58 | libxslt-dev \ 59 | librdf0 \ 60 | redland-utils \ 61 | rasqal-utils \ 62 | raptor2-utils \ 63 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 64 | && apt-get -y autoremove \ 65 | && apt-get clean \ 66 | && rm -rf /var/lib/apt/lists/* \ 67 | ## Tell APT about the TeX Live installation 68 | ## by building a dummy package using equivs 69 | && apt-get install -y --no-install-recommends equivs \ 70 | && cd /tmp \ 71 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 72 | && equivs-build debian-* \ 73 | && mv texlive-local*.deb texlive-local.deb \ 74 | && dpkg -i texlive-local.deb \ 75 | && apt-get -y purge equivs \ 76 | && apt-get -y autoremove \ 77 | ## Admin-based install of TinyTeX: 78 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 79 | | sh -s - --admin --no-path \ 80 | && mv ~/.TinyTeX /opt/TinyTeX \ 81 | && /opt/TinyTeX/bin/*/tlmgr path add \ 82 | && tlmgr update --self \ 83 | && tlmgr install \ 84 | ae \ 85 | ## context fails to install on aarch64 with no output 86 | #context \ 87 | listings \ 88 | makeindex \ 89 | parskip \ 90 | pdfcrop \ 91 | && tlmgr path add \ 92 | && Rscript -e "tinytex::r_texmf()" \ 93 | && chown -R root:users /opt/TinyTeX \ 94 | && chmod -R g+w /opt/TinyTeX \ 95 | && chmod -R g+wx /opt/TinyTeX/bin \ 96 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 97 | && install2.r --error PKI \ 98 | ## And some nice R packages for publishing-related stuff 99 | && install2.r --error --deps TRUE \ 100 | blogdown bookdown rticles rmdshower rJava xaringan \ 101 | ## Install code-server extensions 102 | && cd /tmp \ 103 | && curl -sLO https://open-vsx.org/api/James-Yu/latex-workshop/8.19.2/file/James-Yu.latex-workshop-8.19.2.vsix \ 104 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.19.2.vsix \ 105 | ## Clean up 106 | && rm -rf /tmp/* 107 | 108 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 109 | USER ${NB_USER} 110 | 111 | ENV HOME=/home/${NB_USER} 112 | 113 | WORKDIR ${HOME} 114 | -------------------------------------------------------------------------------- /verse/4.1.1.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.1.1 2 | 3 | ARG DEBIAN_FRONTEND=noninteractive 4 | 5 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2021/11/01/tlnet} 6 | ENV CTAN_REPO=${CTAN_REPO} 7 | 8 | USER root 9 | 10 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 11 | HOME=/root 12 | 13 | WORKDIR ${HOME} 14 | 15 | ## Add LaTeX, rticles and bookdown support 16 | RUN apt-get update \ 17 | && apt-get install -y --no-install-recommends \ 18 | default-jdk \ 19 | fonts-roboto \ 20 | ghostscript \ 21 | lbzip2 \ 22 | libbz2-dev \ 23 | libicu-dev \ 24 | liblzma-dev \ 25 | libpcre2-dev \ 26 | libhunspell-dev \ 27 | libmagick++-dev \ 28 | libpoppler-cpp-dev \ 29 | librdf0-dev \ 30 | ## Installing libnode-dev uninstalls nodejs 31 | ## https://github.com/jeroen/V8/issues/100 32 | #libnode-dev \ 33 | qpdf \ 34 | texinfo \ 35 | libopenmpi-dev \ 36 | ## Install R package redland 37 | && install2.r --error --skipinstalled redland \ 38 | ## Explicitly install runtime library sub-deps of librdf0-dev 39 | && apt-get install -y \ 40 | libcurl4-openssl-dev \ 41 | libxslt-dev \ 42 | librdf0 \ 43 | redland-utils \ 44 | rasqal-utils \ 45 | raptor2-utils \ 46 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 47 | && apt-get -y autoremove \ 48 | && apt-get clean \ 49 | && rm -rf /var/lib/apt/lists/* \ 50 | ## Tell APT about the TeX Live installation 51 | ## by building a dummy package using equivs 52 | && apt-get install -y --no-install-recommends equivs \ 53 | && cd /tmp \ 54 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 55 | && equivs-build debian-* \ 56 | && mv texlive-local*.deb texlive-local.deb \ 57 | && dpkg -i texlive-local.deb \ 58 | && apt-get -y purge equivs \ 59 | && apt-get -y autoremove \ 60 | ## Admin-based install of TinyTeX: 61 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 62 | | sh -s - --admin --no-path \ 63 | && mv ~/.TinyTeX /opt/TinyTeX \ 64 | && /opt/TinyTeX/bin/*/tlmgr path add \ 65 | && tlmgr update --self \ 66 | && tlmgr install \ 67 | ae \ 68 | ## context fails to install on aarch64 with no output 69 | #context \ 70 | listings \ 71 | makeindex \ 72 | parskip \ 73 | pdfcrop \ 74 | && tlmgr path add \ 75 | && Rscript -e "tinytex::r_texmf()" \ 76 | && chown -R root:users /opt/TinyTeX \ 77 | && chmod -R g+w /opt/TinyTeX \ 78 | && chmod -R g+wx /opt/TinyTeX/bin \ 79 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron \ 80 | && install2.r --error PKI \ 81 | ## And some nice R packages for publishing-related stuff 82 | && install2.r --error --deps TRUE \ 83 | blogdown bookdown rticles rmdshower rJava xaringan \ 84 | ## Install code-server extensions 85 | && cd /tmp \ 86 | && curl -sLO https://open-vsx.org/api/James-Yu/latex-workshop/8.19.2/file/James-Yu.latex-workshop-8.19.2.vsix \ 87 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop-8.19.2.vsix \ 88 | ## Clean up 89 | && rm -rf /tmp/* 90 | 91 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 92 | USER ${NB_USER} 93 | 94 | ENV HOME=/home/${NB_USER} 95 | 96 | WORKDIR ${HOME} 97 | -------------------------------------------------------------------------------- /verse/4.1.2.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.1.2 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2022/03/10/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 13 | HOME=/root 14 | 15 | WORKDIR ${HOME} 16 | 17 | ## Add LaTeX, rticles and bookdown support 18 | RUN export CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/vendor/modules/code-oss-dev/extensions \ 19 | && apt-get update \ 20 | && apt-get install -y --no-install-recommends \ 21 | default-jdk \ 22 | fonts-roboto \ 23 | ghostscript \ 24 | hugo \ 25 | lbzip2 \ 26 | libbz2-dev \ 27 | libglpk-dev \ 28 | libgmp3-dev \ 29 | libgl1-mesa-dev \ 30 | libglu1-mesa-dev \ 31 | libhunspell-dev \ 32 | libicu-dev \ 33 | liblzma-dev \ 34 | #libpcre2-dev \ 35 | libmagick++-dev \ 36 | libopenmpi-dev \ 37 | libpoppler-cpp-dev \ 38 | librdf0-dev \ 39 | ## Installing libnode-dev uninstalls nodejs 40 | ## https://github.com/jeroen/V8/issues/100 41 | #libnode-dev \ 42 | qpdf \ 43 | texinfo \ 44 | ## Install R package redland 45 | && install2.r --error --skipinstalled -n $NCPUS redland \ 46 | ## Explicitly install runtime library sub-deps of librdf0-dev 47 | && apt-get install -y \ 48 | libcurl4-openssl-dev \ 49 | libxslt-dev \ 50 | librdf0 \ 51 | redland-utils \ 52 | rasqal-utils \ 53 | raptor2-utils \ 54 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 55 | && apt-get -y autoremove \ 56 | && rm -rf /var/lib/apt/lists/* \ 57 | ## Tell APT about the TeX Live installation 58 | ## by building a dummy package using equivs 59 | && apt-get install -y --no-install-recommends equivs \ 60 | && cd /tmp \ 61 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 62 | && equivs-build debian-* \ 63 | && mv texlive-local*.deb texlive-local.deb \ 64 | && dpkg -i texlive-local.deb \ 65 | && apt-get -y purge equivs \ 66 | && apt-get -y autoremove \ 67 | ## Admin-based install of TinyTeX: 68 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 69 | | sh -s - --admin --no-path \ 70 | && mv ~/.TinyTeX /opt/TinyTeX \ 71 | && /opt/TinyTeX/bin/*/tlmgr path add \ 72 | && tlmgr update --self \ 73 | && tlmgr install \ 74 | ae \ 75 | listings \ 76 | makeindex \ 77 | parskip \ 78 | pdfcrop \ 79 | ## context installs on aarch64 but returns non-zero exit code 80 | && tlmgr install context || true \ 81 | && tlmgr path add \ 82 | && Rscript -e "tinytex::r_texmf()" \ 83 | && chown -R root:users /opt/TinyTeX \ 84 | && chmod -R g+w /opt/TinyTeX \ 85 | && chmod -R g+wx /opt/TinyTeX/bin \ 86 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron.site \ 87 | && install2.r --error --skipinstalled -n $NCPUS PKI \ 88 | ## And some nice R packages for publishing-related stuff 89 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 90 | blogdown \ 91 | bookdown \ 92 | distill \ 93 | rticles \ 94 | rmdshower \ 95 | rJava \ 96 | xaringan \ 97 | ## Install code-server extensions 98 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop \ 99 | ## Clean up 100 | && rm -rf /tmp/* \ 101 | /root/.config \ 102 | /root/.local \ 103 | /root/.vscode-remote \ 104 | /root/.wget-hsts 105 | 106 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 107 | USER ${NB_USER} 108 | 109 | ENV HOME=/home/${NB_USER} 110 | 111 | WORKDIR ${HOME} 112 | -------------------------------------------------------------------------------- /verse/4.1.3.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:4.1.3 2 | 3 | ARG NCPUS=1 4 | 5 | ARG DEBIAN_FRONTEND=noninteractive 6 | 7 | ARG CTAN_REPO=${CTAN_REPO:-https://www.texlive.info/tlnet-archive/2022/04/22/tlnet} 8 | ENV CTAN_REPO=${CTAN_REPO} 9 | 10 | USER root 11 | 12 | ENV PATH=/opt/TinyTeX/bin/x86_64-linux:$PATH \ 13 | HOME=/root 14 | 15 | WORKDIR ${HOME} 16 | 17 | ## Add LaTeX, rticles and bookdown support 18 | RUN export CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions \ 19 | && apt-get update \ 20 | && apt-get install -y --no-install-recommends \ 21 | default-jdk \ 22 | fonts-roboto \ 23 | ghostscript \ 24 | hugo \ 25 | lbzip2 \ 26 | libbz2-dev \ 27 | libglpk-dev \ 28 | libgmp3-dev \ 29 | libgl1-mesa-dev \ 30 | libglu1-mesa-dev \ 31 | libhunspell-dev \ 32 | libicu-dev \ 33 | liblzma-dev \ 34 | #libpcre2-dev \ 35 | libmagick++-dev \ 36 | libopenmpi-dev \ 37 | libpoppler-cpp-dev \ 38 | librdf0-dev \ 39 | ## Installing libnode-dev uninstalls nodejs 40 | ## https://github.com/jeroen/V8/issues/100 41 | #libnode-dev \ 42 | qpdf \ 43 | texinfo \ 44 | ## Install R package redland 45 | && install2.r --error --skipinstalled -n $NCPUS redland \ 46 | ## Explicitly install runtime library sub-deps of librdf0-dev 47 | && apt-get install -y \ 48 | libcurl4-openssl-dev \ 49 | libxslt-dev \ 50 | librdf0 \ 51 | redland-utils \ 52 | rasqal-utils \ 53 | raptor2-utils \ 54 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 55 | && apt-get -y autoremove \ 56 | && rm -rf /var/lib/apt/lists/* \ 57 | ## Tell APT about the TeX Live installation 58 | ## by building a dummy package using equivs 59 | && apt-get install -y --no-install-recommends equivs \ 60 | && cd /tmp \ 61 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 62 | && equivs-build debian-* \ 63 | && mv texlive-local*.deb texlive-local.deb \ 64 | && dpkg -i texlive-local.deb \ 65 | && apt-get -y purge equivs \ 66 | && apt-get -y autoremove \ 67 | ## Admin-based install of TinyTeX: 68 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 69 | | sh -s - --admin --no-path \ 70 | && mv ~/.TinyTeX /opt/TinyTeX \ 71 | && /opt/TinyTeX/bin/*/tlmgr path add \ 72 | && tlmgr update --self \ 73 | && tlmgr install \ 74 | ae \ 75 | listings \ 76 | makeindex \ 77 | parskip \ 78 | pdfcrop \ 79 | ## context installs on aarch64 but returns non-zero exit code 80 | && tlmgr install context || true \ 81 | && tlmgr path add \ 82 | && Rscript -e "tinytex::r_texmf()" \ 83 | && chown -R root:users /opt/TinyTeX \ 84 | && chmod -R g+w /opt/TinyTeX \ 85 | && chmod -R g+wx /opt/TinyTeX/bin \ 86 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron.site \ 87 | && install2.r --error --skipinstalled -n $NCPUS PKI \ 88 | ## And some nice R packages for publishing-related stuff 89 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 90 | blogdown \ 91 | bookdown \ 92 | distill \ 93 | rticles \ 94 | rmdshower \ 95 | rJava \ 96 | xaringan \ 97 | ## Install code-server extensions 98 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop \ 99 | ## Clean up 100 | && rm -rf /tmp/* \ 101 | /root/.config \ 102 | /root/.local \ 103 | /root/.vscode-remote \ 104 | /root/.wget-hsts 105 | 106 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 107 | USER ${NB_USER} 108 | 109 | ENV HOME=/home/${NB_USER} 110 | 111 | WORKDIR ${HOME} 112 | -------------------------------------------------------------------------------- /verse/4.2.0.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG R_VERSION=4.2.0 2 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 3 | ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2022/06/23/tlnet 4 | 5 | FROM registry.gitlab.b-data.ch/jupyterlab/r/tidyverse:${R_VERSION} 6 | 7 | ARG NCPUS=1 8 | 9 | ARG DEBIAN_FRONTEND=noninteractive 10 | 11 | ARG CODE_BUILTIN_EXTENSIONS_DIR 12 | ARG CTAN_REPO 13 | 14 | USER root 15 | 16 | ENV HOME=/root \ 17 | CTAN_REPO=${CTAN_REPO} \ 18 | PATH=/opt/TinyTeX/bin/linux:$PATH 19 | 20 | WORKDIR ${HOME} 21 | 22 | ## Add LaTeX, rticles and bookdown support 23 | RUN apt-get update \ 24 | && apt-get install -y --no-install-recommends \ 25 | default-jdk \ 26 | fonts-roboto \ 27 | ghostscript \ 28 | hugo \ 29 | lbzip2 \ 30 | libbz2-dev \ 31 | libglpk-dev \ 32 | libgmp3-dev \ 33 | libgl1-mesa-dev \ 34 | libglu1-mesa-dev \ 35 | libhunspell-dev \ 36 | libicu-dev \ 37 | liblzma-dev \ 38 | #libpcre2-dev \ 39 | libmagick++-dev \ 40 | libopenmpi-dev \ 41 | libpoppler-cpp-dev \ 42 | librdf0-dev \ 43 | ## Installing libnode-dev uninstalls nodejs 44 | ## https://github.com/jeroen/V8/issues/100 45 | #libnode-dev \ 46 | qpdf \ 47 | texinfo \ 48 | ## Install R package redland 49 | && install2.r --error --skipinstalled -n $NCPUS redland \ 50 | ## Explicitly install runtime library sub-deps of librdf0-dev 51 | && apt-get install -y \ 52 | libcurl4-openssl-dev \ 53 | libxslt-dev \ 54 | librdf0 \ 55 | redland-utils \ 56 | rasqal-utils \ 57 | raptor2-utils \ 58 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 59 | && apt-get -y autoremove \ 60 | && rm -rf /var/lib/apt/lists/* \ 61 | ## Tell APT about the TeX Live installation 62 | ## by building a dummy package using equivs 63 | && apt-get install -y --no-install-recommends equivs \ 64 | && cd /tmp \ 65 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 66 | && equivs-build debian-* \ 67 | && mv texlive-local*.deb texlive-local.deb \ 68 | && dpkg -i texlive-local.deb \ 69 | && apt-get -y purge equivs \ 70 | && apt-get -y autoremove \ 71 | ## Admin-based install of TinyTeX: 72 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 73 | | sh -s - --admin --no-path \ 74 | && mv ~/.TinyTeX /opt/TinyTeX \ 75 | && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ 76 | /opt/TinyTeX/bin/linux \ 77 | && /opt/TinyTeX/bin/linux/tlmgr path add \ 78 | && tlmgr update --self \ 79 | && tlmgr install \ 80 | ae \ 81 | cm-super \ 82 | context \ 83 | dvipng \ 84 | listings \ 85 | makeindex \ 86 | parskip \ 87 | pdfcrop \ 88 | && tlmgr path add \ 89 | && Rscript -e "tinytex::r_texmf()" \ 90 | && chown -R root:${NB_GID} /opt/TinyTeX \ 91 | && chmod -R g+w /opt/TinyTeX \ 92 | && chmod -R g+wx /opt/TinyTeX/bin \ 93 | && echo "PATH=${PATH}" >> /usr/local/lib/R/etc/Renviron.site \ 94 | && install2.r --error --skipinstalled -n $NCPUS PKI \ 95 | ## And some nice R packages for publishing-related stuff 96 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 97 | blogdown \ 98 | bookdown \ 99 | distill \ 100 | rticles \ 101 | rmdshower \ 102 | rJava \ 103 | xaringan \ 104 | ## Install code-server extensions 105 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop \ 106 | ## Clean up 107 | && rm -rf /tmp/* \ 108 | /root/.config \ 109 | /root/.local \ 110 | /root/.vscode-remote \ 111 | /root/.wget-hsts 112 | 113 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 114 | USER ${NB_USER} 115 | 116 | ENV HOME=/home/${NB_USER} 117 | 118 | WORKDIR ${HOME} 119 | -------------------------------------------------------------------------------- /verse/4.2.1.Dockerfile: -------------------------------------------------------------------------------- 1 | ARG BUILD_ON_IMAGE=registry.gitlab.b-data.ch/jupyterlab/r/tidyverse 2 | ARG R_VERSION=4.2.1 3 | ARG CODE_BUILTIN_EXTENSIONS_DIR=/opt/code-server/lib/vscode/extensions 4 | ARG QUARTO_VERSION=1.1.251 5 | ARG CTAN_REPO=https://www.texlive.info/tlnet-archive/2022/10/31/tlnet 6 | 7 | FROM ${BUILD_ON_IMAGE}:${R_VERSION} 8 | 9 | ARG NCPUS=1 10 | 11 | ARG DEBIAN_FRONTEND=noninteractive 12 | 13 | ARG CODE_BUILTIN_EXTENSIONS_DIR 14 | ARG QUARTO_VERSION 15 | ARG CTAN_REPO 16 | 17 | USER root 18 | 19 | ENV HOME=/root \ 20 | CTAN_REPO=${CTAN_REPO} \ 21 | PATH=/opt/TinyTeX/bin/linux:/opt/quarto/bin:$PATH 22 | 23 | WORKDIR ${HOME} 24 | 25 | ## Add LaTeX, rticles and bookdown support 26 | RUN dpkgArch="$(dpkg --print-architecture)" \ 27 | && apt-get update \ 28 | && apt-get install -y --no-install-recommends \ 29 | default-jdk \ 30 | fonts-roboto \ 31 | ghostscript \ 32 | hugo \ 33 | lbzip2 \ 34 | libbz2-dev \ 35 | libglpk-dev \ 36 | libgmp3-dev \ 37 | libgl1-mesa-dev \ 38 | libglu1-mesa-dev \ 39 | libhunspell-dev \ 40 | libicu-dev \ 41 | liblzma-dev \ 42 | #libpcre2-dev \ 43 | libmagick++-dev \ 44 | libopenmpi-dev \ 45 | libpoppler-cpp-dev \ 46 | librdf0-dev \ 47 | ## Installing libnode-dev uninstalls nodejs 48 | ## https://github.com/jeroen/V8/issues/100 49 | #libnode-dev \ 50 | qpdf \ 51 | texinfo \ 52 | ## Install R package redland 53 | && install2.r --error --skipinstalled -n $NCPUS redland \ 54 | ## Explicitly install runtime library sub-deps of librdf0-dev 55 | && apt-get install -y \ 56 | libcurl4-openssl-dev \ 57 | libxslt-dev \ 58 | librdf0 \ 59 | redland-utils \ 60 | rasqal-utils \ 61 | raptor2-utils \ 62 | ## Get rid of librdf0-dev and its dependencies (incl. libcurl4-gnutls-dev) 63 | && apt-get -y autoremove \ 64 | && rm -rf /var/lib/apt/lists/* \ 65 | && if [ ${dpkgArch} = "amd64" ]; then \ 66 | ## Install quarto 67 | curl -sLO https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz; \ 68 | mkdir -p /opt/quarto; \ 69 | tar -xzf quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz -C /opt/quarto --no-same-owner --strip-components=1; \ 70 | rm quarto-${QUARTO_VERSION}-linux-${dpkgArch}.tar.gz; \ 71 | ## Remove quarto pandoc 72 | rm /opt/quarto/bin/tools/pandoc; \ 73 | ## Link to system pandoc 74 | ln -s /usr/bin/pandoc /opt/quarto/bin/tools/pandoc; \ 75 | fi \ 76 | ## Tell APT about the TeX Live installation 77 | ## by building a dummy package using equivs 78 | && apt-get install -y --no-install-recommends equivs \ 79 | && cd /tmp \ 80 | && wget https://github.com/scottkosty/install-tl-ubuntu/raw/master/debian-control-texlive-in.txt \ 81 | && equivs-build debian-* \ 82 | && mv texlive-local*.deb texlive-local.deb \ 83 | && dpkg -i texlive-local.deb \ 84 | && apt-get -y purge equivs \ 85 | && apt-get -y autoremove \ 86 | ## Admin-based install of TinyTeX: 87 | && wget -qO- "https://yihui.org/tinytex/install-unx.sh" \ 88 | | sh -s - --admin --no-path \ 89 | && mv ~/.TinyTeX /opt/TinyTeX \ 90 | && ln -rs /opt/TinyTeX/bin/$(uname -m)-linux \ 91 | /opt/TinyTeX/bin/linux \ 92 | && /opt/TinyTeX/bin/linux/tlmgr path add \ 93 | && tlmgr update --self \ 94 | ## TeX packages as requested by the community 95 | && curl -sSLO https://yihui.org/gh/tinytex/tools/pkgs-yihui.txt \ 96 | && tlmgr install $(cat pkgs-yihui.txt | tr '\n' ' ') \ 97 | && rm -f pkgs-yihui.txt \ 98 | ## TeX packages as in rocker/verse 99 | && tlmgr install \ 100 | context \ 101 | pdfcrop \ 102 | ## TeX packages as in jupyter/scipy-notebook 103 | && tlmgr install \ 104 | cm-super \ 105 | dvipng \ 106 | ## TeX packages specific for nbconvert 107 | && tlmgr install \ 108 | oberdiek \ 109 | titling \ 110 | && tlmgr path add \ 111 | && Rscript -e "tinytex::r_texmf()" \ 112 | && chown -R root:${NB_GID} /opt/TinyTeX \ 113 | && chmod -R g+w /opt/TinyTeX \ 114 | && chmod -R g+wx /opt/TinyTeX/bin \ 115 | && install2.r --error --skipinstalled -n $NCPUS PKI \ 116 | ## And some nice R packages for publishing-related stuff 117 | && install2.r --error --deps TRUE --skipinstalled -n $NCPUS \ 118 | blogdown \ 119 | bookdown \ 120 | distill \ 121 | quarto \ 122 | rticles \ 123 | rmdshower \ 124 | rJava \ 125 | xaringan \ 126 | ## Install code-server extensions 127 | && if [ ${dpkgArch} = "amd64" ]; then \ 128 | code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension quarto.quarto; \ 129 | fi \ 130 | && code-server --extensions-dir ${CODE_BUILTIN_EXTENSIONS_DIR} --install-extension James-Yu.latex-workshop \ 131 | ## Clean up 132 | && rm -rf /tmp/* \ 133 | /root/.config \ 134 | /root/.local \ 135 | /root/.vscode-remote \ 136 | /root/.wget-hsts 137 | 138 | ## Switch back to ${NB_USER} to avoid accidental container runs as root 139 | USER ${NB_USER} 140 | 141 | ENV HOME=/home/${NB_USER} 142 | 143 | WORKDIR ${HOME} 144 | --------------------------------------------------------------------------------