Bash carrega o virtualenv na inicialização como usuário não raiz no docker

0

Eu tento criar uma imagem docker do Python personalizada que gera uma sessão bash com o virtualenv pré-carregado. Para conseguir isso, criei um script entrypoint.sh :

#!/bin/sh

USER_ID=$(id -u developer)
GROUP_ID=$(id -g developer)

if [ ${DOCKER_UID} !== ${USER_ID} ]; then
  usermod -u ${DOCKER_UID} developer
fi

if [ ${DOCKER_GID} !== ${GROUP_ID} ]; then
  groupmod -g ${DOCKER_GID} developer
fi

cd /home/dev/code

if [ -f /home/dev/code/${VENV_FOLDER}/bin/activate ]; then
  # Launch bash with virtualenv preloades as developer user
fi

E eu uso o seguinte Dockerfile para criar a imagem do docker:

FROM python:3

ENV DOCKER_UID=1000
ENV DOCKER_GID=1000
ENV VENV_FOLDER=env

RUN mkdir /home/dev/code &&
    pip install virtualenv &&
    useradd -d /home/dev -u ${DOCKER_UID} -g ${DOCKER_GID} developer

COPY entrypoint.sh /usr/bin/entrypoint.sh
RUN chmod +x /usr/bin/entrypoint.sh

VOLUME /home/dev/code

ENTRYPOINT /usr/bin/entrypoint.sh

Mas agora estou empolgado com isso: Quando eu preciso iniciar um virtualenv, eu corro o seguinte comando em uma sessão bash ativa:

cd ~/myproject
source ./env/bin/activate

E então eu ativo meu virtualenv , mas o que eu quero alcançar é fazer o bash criar primeiro o python virtualenv e então solicitar uma sessão bash. Mas como eu vou conseguir isso?

    
por Dimitrios Desyllas 16.11.2018 / 15:28

0 respostas