Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion terra-jupyter-bioconductor/Dockerfile
Original file line number Diff line number Diff line change
@@ -1 +1,45 @@
FROM us.gcr.io/broad-dsp-gcr-public/terra-jupyter-r:2.2.7
FROM us.gcr.io/broad-dsp-gcr-public/terra-base:1.0.0

USER root

ENV R_VERSION="4.5.2"
ENV R_HOME="/usr/local/lib/R"
ENV TZ="Etc/UTC"

COPY scripts/install_R_source.sh /rocker_scripts/install_R_source.sh
RUN /rocker_scripts/install_R_source.sh
Comment on lines +1 to +10
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This Dockerfile no longer extends terra-jupyter-r or installs any Jupyter components, which conflicts with the image name (terra-jupyter-bioconductor) and the existing README that describes it as a Jupyter-compatible Leonardo image. If this image is still intended for notebook service, it likely needs the Jupyter stack (and/or should remain FROM .../terra-jupyter-r).

Copilot uses AI. Check for mistakes.

ENV CRAN="https://cloud.r-project.org"
ENV LANG=en_US.UTF-8

COPY scripts/bin/ /rocker_scripts/bin/
COPY scripts/setup_R.sh /rocker_scripts/setup_R.sh
RUN <<EOF
Comment thread
vjcitn marked this conversation as resolved.
if grep -q "1000" /etc/passwd; then
userdel --remove "$(id -un 1000)";
fi
/rocker_scripts/setup_R.sh
EOF

ENV S6_VERSION="v2.1.0.2"
ENV RSTUDIO_VERSION="2026.01.1+403"
ENV DEFAULT_USER="rstudio"
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ENV DEFAULT_USER="rstudio" sets DEFAULT_USER, not USER.

So ENV USER=jupyter from terra-base is still in the container's environment at runtime. In init_userconf.sh, USER=${DEFAULT_USER} overrides it locally within that script, but that change doesn't
persist to the container environment unless explicitly written to /etc/environment.


COPY scripts/install_rstudio.sh /rocker_scripts/install_rstudio.sh
COPY scripts/install_s6init.sh /rocker_scripts/install_s6init.sh
COPY scripts/default_user.sh /rocker_scripts/default_user.sh
COPY scripts/init_set_env.sh /rocker_scripts/init_set_env.sh
COPY scripts/init_userconf.sh /rocker_scripts/init_userconf.sh
COPY scripts/pam-helper.sh /rocker_scripts/pam-helper.sh
RUN /rocker_scripts/install_rstudio.sh

EXPOSE 8787
CMD ["/init"]
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs to be ENTRYPOINT ["/init"]. In Docker, when both ENTRYPOINT and CMD are present and the child image doesn't override ENTRYPOINT, CMD becomes arguments to the parent's entrypoint. The container actually runs:

/etc/jupyter/bin/jupyter notebook /init

Which is the main reason why Rstudio did not start on Terra


COPY scripts/install_pandoc.sh /rocker_scripts/install_pandoc.sh
RUN /rocker_scripts/install_pandoc.sh

COPY scripts/install_quarto.sh /rocker_scripts/install_quarto.sh
RUN /rocker_scripts/install_quarto.sh

COPY scripts /rocker_scripts
3 changes: 3 additions & 0 deletions terra-rstudio-anvil/CHECK/chk1
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
docker pull us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.17.0
docker inspect us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.17.0 | \
python3 -m json.tool | grep -A 50 '"Labels"'
2 changes: 2 additions & 0 deletions terra-rstudio-anvil/CHECK/chk2
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
docker inspect us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.17.0 | \
python3 -m json.tool | grep -A 300 '"Env"'
3 changes: 3 additions & 0 deletions terra-rstudio-anvil/CHECK/chk3
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
docker pull us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.21.0
#docker inspect us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.17.0 | \
# python3 -m json.tool | grep -A 50 '"Labels"'
2 changes: 2 additions & 0 deletions terra-rstudio-anvil/CHECK/chk4
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
docker inspect us.gcr.io/broad-dsp-gcr-public/anvil-rstudio-bioconductor:3.21.0 | \
python3 -m json.tool | grep -A 300 '"Env"'
165 changes: 165 additions & 0 deletions terra-rstudio-anvil/CHECK/o4
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
"Env": [
"PATH=/opt/venv/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/bin",
"NVARCH=x86_64",
"NVIDIA_REQUIRE_CUDA=cuda>=12.6 brand=unknown,driver>=470,driver<471 brand=grid,driver>=470,driver<471 brand=tesla,driver>=470,driver<471 brand=nvidia,driver>=470,driver<471 brand=quadro,driver>=470,driver<471 brand=quadrortx,driver>=470,driver<471 brand=nvidiartx,driver>=470,driver<471 brand=vapps,driver>=470,driver<471 brand=vpc,driver>=470,driver<471 brand=vcs,driver>=470,driver<471 brand=vws,driver>=470,driver<471 brand=cloudgaming,driver>=470,driver<471 brand=unknown,driver>=535,driver<536 brand=grid,driver>=535,driver<536 brand=tesla,driver>=535,driver<536 brand=nvidia,driver>=535,driver<536 brand=quadro,driver>=535,driver<536 brand=quadrortx,driver>=535,driver<536 brand=nvidiartx,driver>=535,driver<536 brand=vapps,driver>=535,driver<536 brand=vpc,driver>=535,driver<536 brand=vcs,driver>=535,driver<536 brand=vws,driver>=535,driver<536 brand=cloudgaming,driver>=535,driver<536 brand=unknown,driver>=550,driver<551 brand=grid,driver>=550,driver<551 brand=tesla,driver>=550,driver<551 brand=nvidia,driver>=550,driver<551 brand=quadro,driver>=550,driver<551 brand=quadrortx,driver>=550,driver<551 brand=nvidiartx,driver>=550,driver<551 brand=vapps,driver>=550,driver<551 brand=vpc,driver>=550,driver<551 brand=vcs,driver>=550,driver<551 brand=vws,driver>=550,driver<551 brand=cloudgaming,driver>=550,driver<551",
"NV_CUDA_CUDART_VERSION=12.6.77-1",
"CUDA_VERSION=12.6.2",
"LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
"NVIDIA_VISIBLE_DEVICES=all",
"NVIDIA_DRIVER_CAPABILITIES=compute,utility",
"NV_CUDA_LIB_VERSION=12.6.2-1",
"NV_NVTX_VERSION=12.6.77-1",
"NV_LIBNPP_VERSION=12.3.1.54-1",
"NV_LIBNPP_PACKAGE=libnpp-12-6=12.3.1.54-1",
"NV_LIBCUSPARSE_VERSION=12.5.4.2-1",
"NV_LIBCUBLAS_PACKAGE_NAME=libcublas-12-6",
"NV_LIBCUBLAS_VERSION=12.6.3.3-1",
"NV_LIBCUBLAS_PACKAGE=libcublas-12-6=12.6.3.3-1",
"NV_LIBNCCL_PACKAGE_NAME=libnccl2",
"NV_LIBNCCL_PACKAGE_VERSION=2.23.4-1",
"NCCL_VERSION=2.23.4-1",
"NV_LIBNCCL_PACKAGE=libnccl2=2.23.4-1+cuda12.6",
"NVIDIA_PRODUCT_NAME=CUDA",
"NV_CUDA_CUDART_DEV_VERSION=12.6.77-1",
"NV_NVML_DEV_VERSION=12.6.77-1",
"NV_LIBCUSPARSE_DEV_VERSION=12.5.4.2-1",
"NV_LIBNPP_DEV_VERSION=12.3.1.54-1",
"NV_LIBNPP_DEV_PACKAGE=libnpp-dev-12-6=12.3.1.54-1",
"NV_LIBCUBLAS_DEV_VERSION=12.6.3.3-1",
"NV_LIBCUBLAS_DEV_PACKAGE_NAME=libcublas-dev-12-6",
"NV_LIBCUBLAS_DEV_PACKAGE=libcublas-dev-12-6=12.6.3.3-1",
"NV_CUDA_NSIGHT_COMPUTE_VERSION=12.6.2-1",
"NV_CUDA_NSIGHT_COMPUTE_DEV_PACKAGE=cuda-nsight-compute-12-6=12.6.2-1",
"NV_NVPROF_VERSION=12.6.80-1",
"NV_NVPROF_DEV_PACKAGE=cuda-nvprof-12-6=12.6.80-1",
"NV_LIBNCCL_DEV_PACKAGE_NAME=libnccl-dev",
"NV_LIBNCCL_DEV_PACKAGE_VERSION=2.23.4-1",
"NV_LIBNCCL_DEV_PACKAGE=libnccl-dev=2.23.4-1+cuda12.6",
"LIBRARY_PATH=/usr/local/cuda/lib64/stubs",
"NV_CUDNN_VERSION=9.5.0.50-1",
"NV_CUDNN_PACKAGE_NAME=libcudnn9-cuda-12",
"NV_CUDNN_PACKAGE=libcudnn9-cuda-12=9.5.0.50-1",
"NV_CUDNN_PACKAGE_DEV=libcudnn9-dev-cuda-12=9.5.0.50-1",
"R_VERSION=4.4.2",
"R_HOME=/usr/local/lib/R",
"TZ=Etc/UTC",
"CRAN=https://p3m.dev/cran/__linux__/noble/latest",
"LANG=en_US.UTF-8",
"NVBLAS_CONFIG_FILE=/etc/nvblas.conf",
"PYTHON_CONFIGURE_OPTS=--enable-shared",
"RETICULATE_AUTOCONFIGURE=0",
"PURGE_BUILDDEPS=false",
"VIRTUAL_ENV=/opt/venv",
"S6_VERSION=v2.1.0.2",
"RSTUDIO_VERSION=2024.09.0+375",
"DEFAULT_USER=rstudio",
"BIOCONDUCTOR_USE_CONTAINER_REPOSITORY=TRUE",
"TARGETARCH=amd64",
"TARGETPLATFORM=linux/amd64",
"PLATFORM=linux/amd64",
"LIBSBML_CFLAGS=-I/usr/include",
"LIBSBML_LIBS=-lsbml",
"BIOCONDUCTOR_DOCKER_VERSION=3.20.30",
"BIOCONDUCTOR_VERSION=3.20",
"BIOCONDUCTOR_NAME=bioconductor_docker",
"RSTUDIO_PORT=8001",
"RSTUDIO_HOME=/etc/rstudio",
"RSTUDIO_USERSETTING=/home/rstudio/.config/rstudio/rstudio-prefs.json"
],
"Cmd": [
"/init"
],
"ArgsEscaped": true,
"Image": "",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/opt/nvidia/nvidia_entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"com.nvidia.cudnn.version": "9.5.0.50-1",
"description": "Bioconductor docker image with system dependencies to install all packages.",
"license": "Artistic-2.0",
"maintainer": "maintainer@bioconductor.org",
"name": "bioconductor/bioconductor_docker",
"org.opencontainers.image.created": "2025-08-04T22:15:40.642Z",
"org.opencontainers.image.description": "Docker containers for Anvil Project",
"org.opencontainers.image.licenses": "MIT",
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.revision": "476f3b706dd40d0916e72a09a94af39c318fbdcc",
"org.opencontainers.image.source": "https://github.com/anvilproject/anvil-docker",
"org.opencontainers.image.title": "anvil-docker",
"org.opencontainers.image.url": "https://github.com/anvilproject/anvil-docker",
"org.opencontainers.image.version": "3.21.0",
"url": "https://github.com/Bioconductor/bioconductor_docker",
"vendor": "Bioconductor Project",
"version": ""
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 22552048216,
"GraphDriver": {
"Data": {
"LowerDir": "/var/lib/docker/overlay2/cf7fa246b27127fbc7faf946613c6c510c94f63c31f23c8acdd48946a1376db0/diff:/var/lib/docker/overlay2/e43fcff0cf93fead086d7c7d637b7ea27419335a97e9a47c6789a34cbbc5067f/diff:/var/lib/docker/overlay2/7dca531e0be25a39c10c7b350ceff4bc52bdd991cedb979371a4944de729a75c/diff:/var/lib/docker/overlay2/901f19ba09c04ae37cc370307f0a49258164673154e46789ad9458fd283eb474/diff:/var/lib/docker/overlay2/db305e49910017986896288b0bc122b455da538e89c7b8fbb248ee239d341cb9/diff:/var/lib/docker/overlay2/ad958a6dce5ca6d872dbf0f78702ebe6125d048a8156ed1da4dff31000743273/diff:/var/lib/docker/overlay2/cc2745ca8d60a5ddd4c5e7288ce26e28ce518735b5be9af561f0c969970b57ac/diff:/var/lib/docker/overlay2/c915fe2c6bb9f41425c3c8c5cc24479ff7077f792f66f22171bf1fccc091052a/diff:/var/lib/docker/overlay2/a744b802620cf50e33d06fc1b516ff1ac180630f8978827c82499dd7afc4f59b/diff:/var/lib/docker/overlay2/e9aae12bc74af242baca3f61dd13be7ed18d6d3b99a1b83fcff4d324365d6cc5/diff:/var/lib/docker/overlay2/9e13e642345089611749d662fafb31633906a352385e2a6c2f820e0102124178/diff:/var/lib/docker/overlay2/99521c756b309b32f1c98db856d2f397cfe0e2eefd5e564f4bd60b4c42551507/diff:/var/lib/docker/overlay2/238606af66d8e73e0a639e5a97a4d0a2c3fd26a6f8f5b7cc2f9861b0da8b23d8/diff:/var/lib/docker/overlay2/31b160971f8683ec58b0bcb851b9064fb90819b217023a4709e17ff7c540fc0c/diff:/var/lib/docker/overlay2/deb8b144ebe8c277b95f5aa1a0cdc71c7c2f6eeeb04cf7ab29415e002010dc48/diff:/var/lib/docker/overlay2/4b390a09102afdb4a397a6784638c2fef38b91894a5398bf6692b52b09483d5b/diff:/var/lib/docker/overlay2/9b84a1431b6058083ea0ab25dc960d102a4feef1fb73aa6db537d7f106ca7ea9/diff:/var/lib/docker/overlay2/35206508ab924b12ea1880910e619a4529dae96047ac069d9c854d71a379f55e/diff:/var/lib/docker/overlay2/255b955b5ec20d0478944975107c6469b81b0cb7c3c2529c3ca48d7ec8a1ed24/diff:/var/lib/docker/overlay2/f6231f5352bc7cd9f5c177ccb529adc645779bf439f984a43f2f369b48e8599b/diff:/var/lib/docker/overlay2/f9dab2de85797e45fa22b24093eda1a4523fc03b1318573837a507ec934bcce6/diff:/var/lib/docker/overlay2/5a040c1712359815ac7808157ec1139d6c1fb62841a4cc5d3fdc4dd4edc4c809/diff:/var/lib/docker/overlay2/4a7cf1c929a2e3fce703623eea51f142f89e0b8417aa2f2a5d01ed054948cf80/diff:/var/lib/docker/overlay2/f5dd1e6e11f8c46e749f3c67c582091ed82cf7936e3cfbbb94c8bff76f06a992/diff:/var/lib/docker/overlay2/2affb8ca06066d579b99d69e293936b5e16e784517ff3f3ce9974c7cc59f33f5/diff:/var/lib/docker/overlay2/d7f41261a0ac48a6c3d7d7a6a5e590816c85af825ffe665c4738ecb0b880a8d3/diff:/var/lib/docker/overlay2/e98f0b85645c860710f6de1ff4a2263bbe156265903bfa335a719570d3da32fc/diff:/var/lib/docker/overlay2/aa055c547f73243358117ab47ca7d6972a87ed8d079674bd424bc11e30beaa67/diff:/var/lib/docker/overlay2/5cfa1717ac7ee656f80216fb1431f1865a5933d1e92577f0107875e3be5a279e/diff:/var/lib/docker/overlay2/97cfbfcbe716845bed6434fd316bdc41af144b70eef6b4c1038d6263ce141b03/diff:/var/lib/docker/overlay2/b253011f1e3a3f0f5b6e978756eb1580b3291c7455cdd92a0e71b2a1fda83d91/diff:/var/lib/docker/overlay2/36ef20d3f44e09e48abd323a5bf0bbe462094aef623db033b5768154f5057db7/diff:/var/lib/docker/overlay2/d7ac05737772209a1f77f52ed7a03f05b2412ffb1aaa02f72ab0f8b2798e76bc/diff:/var/lib/docker/overlay2/ecc4ef6a3893ccc48d4c55548c3e0bb743e131f05b4dab7b822910550c983800/diff:/var/lib/docker/overlay2/fd771b2d601447470b31cebcec6d08f721a48fcf9e4c73a0ffb631fddbc5c51e/diff:/var/lib/docker/overlay2/57da82d6ada11df566149b1caf325c8bc4cff18700c67c2069e8cbc099332596/diff:/var/lib/docker/overlay2/9448d956fc82fcc0a7ef8466120916cf1158d2ec4a6c3eeca394be2ab1c38d98/diff:/var/lib/docker/overlay2/316ff691b6dbb1a108701e293659d0e0d5f881e7cc90160b32e6a9eacedd33ff/diff:/var/lib/docker/overlay2/a6f3d1664d8db7d8dce31209b4b96b69dab0528e0f65b0db68ed0ff19d428c09/diff:/var/lib/docker/overlay2/d57b876a47ab6ae165c5a03aee85f8f7ef4cfd35d3f4cf9399c8132878370c9c/diff:/var/lib/docker/overlay2/6e1018bb32f0f828578e5c53a3ca0a4c06c40cbb7f0191f9fe430f5c74364221/diff:/var/lib/docker/overlay2/1a772f5c0c2d2b0bc5a293925b48e8b2be1e672190f53f3b7a59edf6bd9e7789/diff:/var/lib/docker/overlay2/7fab9fe8fa157ee9ec06098dbb64dc08dc72b8c8f22c0b3ba3247a47e4c22501/diff",
"MergedDir": "/var/lib/docker/overlay2/8d4dbf8bcab4a54c33ca3cd44a6854dc887dddefbefbb4c0ab42188cafb66830/merged",
"UpperDir": "/var/lib/docker/overlay2/8d4dbf8bcab4a54c33ca3cd44a6854dc887dddefbefbb4c0ab42188cafb66830/diff",
"WorkDir": "/var/lib/docker/overlay2/8d4dbf8bcab4a54c33ca3cd44a6854dc887dddefbefbb4c0ab42188cafb66830/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:fa0f10cc481ea09f029a04c379029a205cd975840c811f16286b28ae103c66ea",
"sha256:5225ca3cb880c4f82c5f98a59eb2e95d5a6d21996662f5e75119db17d78acdaa",
"sha256:46acf2e7015e00c4d84fc11aec061fb226c38ef3604e1fe6c1af43925cdf6f76",
"sha256:822218c66829845d1985100a6422bbfbd92f9d483d7406b4f93a522391946f09",
"sha256:d76ec6899bbc1dec0ffd051cc1a673e65de5791812875d4c409d2be9e3b04d79",
"sha256:2fec42eddb5075bb4028faf0862e37952ce6591db431c39599a94c29a1d3e879",
"sha256:45928fda1f9dac6e5196403f1c668e2b632ea44c963f952ae92d22a273c2bff1",
"sha256:ee42cf5b162e166f478f50d30477ad3bd88a0525ad5388497df5ebf084904b0a",
"sha256:04ad012990cc55cc6c125ae91a205db550ca5c56eb758ed0742be03a0ddea091",
"sha256:39941670d27ae7d9153b3829a5f47d5acba056b423c22145c796f3aa294baf95",
"sha256:3c74a83640964a860398a4c7d28d617efb16b9943674345ece655032d95b3400",
"sha256:64d84285af57bcccce61916d6f3835d935e14dadd144663237207f161dbfd140",
"sha256:2690b20baf7991d2704712eb8855cdeff86d93f3a218bd863e2df701fb0c8663",
"sha256:df7479a6fee187801acd8fc787605594846fa42d41c77c3c1d25e0d463bdb77a",
"sha256:1a057aa5ce6b12de968d59a0ed4f1e127a83af697d149efdda347cca6abadfdc",
"sha256:71fe6e08b936f31e87a0f8fc962c0d70c440f01cf8f7a6c465ac1bea0733db25",
"sha256:c37bc2b16106d3c060397e5e49b78f8d00a75cc7954fa2d499e510a7b177433c",
"sha256:8462eb4005c228cf2fc565ef358eeeb08b315f84b34915ee7975f7b830c40e4e",
"sha256:1ca9fc8199eae8739e92b17eb1169f00eb0650a5e5653a8811a3e6ecbdda2b01",
"sha256:212cbed791e51d261b8f30f4541f90f2e003a75b015d03a179cdbe7270e506e6",
"sha256:03f1a063b3958b4f0d22e29fff52be903a92aa9d13287636f1fcdb0304110ddf",
"sha256:5a74226d9d75178d4be6f039b489185364da1bb1a4c50b9a2f13e1b8356d45f4",
"sha256:465fca3f6af1de841e6fd1a86e41d4d24601ec32b940d00f9cd7efc26ee34115",
"sha256:f1858cd63ba282168086483248c29c0c89c36950babc49c10a872243cd4eaa02",
"sha256:3e6f3bb2dc5f1e46f726b92779ce6125e31d11fb5100372f6e105891d6ec5af6",
"sha256:06e6290035ad64329229b7c87d66b0e286ebacefb23093f0209725c30cf2c0ac",
"sha256:44a7ddc18326fbd23c14a046e9e029cf682cbf8a4464c74c6957462e8128fb3f",
"sha256:3041769de4052bb736cbf2c37b03ac2111f69ce8869a6b00b31029c0ca0ed93c",
"sha256:aac4e71a76b3b4c87b01743f92cb8c0a32ce50f6c59b678d3c6fb26db4617918",
"sha256:391a73ccea8ec27ffe9eae01c1d2c45d6bfbe92aa37029dec59ea2169e769dc6",
"sha256:06d0484895bd4df25a3cfd585fc9873f8908b30217c0d666172433173142c71f",
"sha256:4fa8d28a68af62218990ef8fc2092039a12fad306d4b603823e0d9b23bf6cb0d",
"sha256:79c253d3a564479c1664e2530b3a77affbc428421d3347391e6cb47fcf2fc5b7",
"sha256:8b1a49a44de9ac97e74168307580a48a503be6cbc29559eecd8eb78fd6eff461",
"sha256:5031d2154709f869770ba96b1cce22d7d7ded9848176c52e64868d19cf9a9bf8",
"sha256:3d4f67349bc3ce7b82f4e0da335969a2a869230d92fab23c535dab1cf9193455",
"sha256:8b4ad3f4121516840c23cab248b5ab00c9ebdcbd1cd0772f443bdae0bd390aba",
"sha256:a6b66718f88ca8892e079cd4be90c62f44c2beff3265de854cbe16102a5e1b98",
"sha256:25be4b61ee67b1b7bbe46091e5adbfd5295a29723070b4942b761b6621986223",
"sha256:ee2557e7ed0d79fc83ed737610cf7dd1c0d681e16df377bf0ff48beb0500ea44",
"sha256:d1b52e7af32a726c1c56c961d9e64058efb2a662bd04abfac892418038d76f71",
"sha256:92ca48456b537f8d60e8808a36e1b706b5c3d2972c03822e0cffc19b41a9398a",
"sha256:a50f7a20e9d62e37c400a04193e1b0b24e59012e09c4448fffc3feb9858908f7",
"sha256:ff7de508166034bd4a1f7c16c0d3d69b8d6eb24622106fa56b30dd42d9ad46e6"
]
},
"Metadata": {
"LastTagTime": "0001-01-01T00:00:00Z"
}
}
]
45 changes: 45 additions & 0 deletions terra-rstudio-anvil/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# check=skip=SecretsUsedInArgOrEnv
FROM us.gcr.io/broad-dsp-gcr-public/terra-base:1.0.0

USER root

ENV R_VERSION="4.5.2"
ENV R_HOME="/usr/local/lib/R"
ENV TZ="Etc/UTC"

COPY scripts/install_R_source.sh /rocker_scripts/install_R_source.sh
RUN /rocker_scripts/install_R_source.sh

ENV CRAN="https://cloud.r-project.org"
ENV LANG=en_US.UTF-8

COPY scripts/bin/ /rocker_scripts/bin/
COPY scripts/setup_R.sh /rocker_scripts/setup_R.sh
RUN <<EOF
if grep -q "1000" /etc/passwd; then
userdel --remove "$(id -un 1000)";
fi
/rocker_scripts/setup_R.sh
EOF

ENV S6_VERSION="v2.1.0.2"
ENV RSTUDIO_VERSION="2026.01.1+403"
ENV DEFAULT_USER="rstudio"
ENV RSTUDIO_PORT=8001
ENV RSTUDIO_HOME=/etc/rstudio
ENV RSTUDIO_USERSETTING=/home/rstudio/.config/rstudio/rstudio-prefs.json

COPY scripts/install_rstudio.sh /rocker_scripts/install_rstudio.sh
COPY scripts/install_s6init.sh /rocker_scripts/install_s6init.sh
COPY scripts/default_user.sh /rocker_scripts/default_user.sh
COPY scripts/init_set_env.sh /rocker_scripts/init_set_env.sh
COPY scripts/init_userconf.sh /rocker_scripts/init_userconf.sh

RUN /rocker_scripts/install_rstudio.sh

ENV PASSWORD="bioc"

Comment on lines +40 to +41
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Setting a fixed default PASSWORD in the image bakes in well-known credentials, which is unsafe for any deployment where the container is reachable. Prefer leaving PASSWORD unset so init_userconf.sh generates a random password, or require it to be provided at runtime.

Suggested change
ENV PASSWORD="bioc"

Copilot uses AI. Check for mistakes.
ENV RSTUDIO_HOME=/home/rstudio
EXPOSE 8001
ENTRYPOINT ["/init"]

Loading