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?
Tags bash docker shell-script