diff --git a/sidecars/python/Dockerfile b/sidecars/python/Dockerfile index 8883d8b80b..53bc5a5748 100644 --- a/sidecars/python/Dockerfile +++ b/sidecars/python/Dockerfile @@ -12,13 +12,6 @@ FROM python:3.8.6-slim ENV HOME=/home/theia -RUN mkdir /projects ${HOME} && \ - # Change permissions to let any arbitrary user - for f in "${HOME}" "/etc/passwd" "/projects"; do \ - echo "Changing permissions on ${f}" && chgrp -R 0 ${f} && \ - chmod -R g+rwX ${f}; \ - done - RUN apt-get update && \ apt-get install exuberant-ctags && \ apt-get install wget -y && \ @@ -29,6 +22,24 @@ RUN apt-get update && \ apt-get purge -y --auto-remove gcc build-essential && \ apt-get clean && apt-get -y autoremove && rm -rf /var/lib/apt/lists/* + +SHELL ["/bin/bash", "-c"] +RUN command -v source || (echo "ERROR: Could not find 'source' command. SHELL may not supported. If you are using podman, try again with the '--format docker' flag." && exit 126) + +RUN cd "${HOME}"; \ + python -m venv .venv ; \ + source .venv/bin/activate; \ + pip install -U ipykernel jupyter; \ + python -m ipykernel install --name=.venv --user; \ + mv "${HOME}"/.venv "${HOME}"/.venv-tmp + +RUN mkdir /projects && \ + # Change permissions to let any arbitrary user + for f in "${HOME}" "/etc/passwd" "/projects"; do \ + echo "Changing permissions on ${f}" && chgrp -R 0 ${f} && \ + chmod -R g+rwX ${f}; \ + done + ADD etc/entrypoint.sh /entrypoint.sh ENTRYPOINT [ "/entrypoint.sh" ] CMD ${PLUGIN_REMOTE_ENDPOINT_EXECUTABLE} diff --git a/sidecars/python/etc/entrypoint.sh b/sidecars/python/etc/entrypoint.sh index bd789673b2..62baac8459 100755 --- a/sidecars/python/etc/entrypoint.sh +++ b/sidecars/python/etc/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash # # Copyright (c) 2018-2020 Red Hat, Inc. # This program and the accompanying materials are made @@ -20,7 +20,7 @@ GROUP_ID=$(id -g) export GROUP_ID if ! whoami >/dev/null 2>&1; then - echo "${USER_NAME:-user}:x:${USER_ID}:0:${USER_NAME:-user} user:${HOME}:/bin/sh" >> /etc/passwd + echo "${USER_NAME:-user}:x:${USER_ID}:0:${USER_NAME:-user} user:${HOME}:/bin/bash" >> /etc/passwd fi # Grant access to projects volume in case of non root user with sudo rights @@ -28,4 +28,13 @@ if [ "${USER_ID}" -ne 0 ] && command -v sudo >/dev/null 2>&1 && sudo -n true > / sudo chown "${USER_ID}:${GROUP_ID}" /projects fi +# Setup .venv in the 'venv' volume that should be mounted in HOME/.venv +mkdir -p "${HOME}"/.venv +if [ ! -f "${HOME}"/.venv/bin/activate ]; then + echo "${HOME}"/.venv is empty, moving files from "${HOME}"/.venv-tmp/ + mv "${HOME}"/.venv-tmp/* "${HOME}"/.venv +fi + +# shellcheck source=/dev/null +source "${HOME}"/.venv/bin/activate exec "$@"