Bash load virtualenv on launch as non-root user in docker

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP











up vote
0
down vote

favorite












I try to make a custom python docker image that spawns a bash session with virtualenv pre-loaded. In order to achieve that I created a entrypoint.sh script:



#!/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


And I use the following Dockerfile in order to build de docker image:



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


But now I am stack to this: When I need to launch a virtualenv I run the following command on an active bash session:



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


And then I activate my virtualenv, but what I want to achieve is to make bash create first the python virtualenv and then prompt to a bash session. But how I am gonna achieve that?










share|improve this question

























    up vote
    0
    down vote

    favorite












    I try to make a custom python docker image that spawns a bash session with virtualenv pre-loaded. In order to achieve that I created a entrypoint.sh script:



    #!/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


    And I use the following Dockerfile in order to build de docker image:



    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


    But now I am stack to this: When I need to launch a virtualenv I run the following command on an active bash session:



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


    And then I activate my virtualenv, but what I want to achieve is to make bash create first the python virtualenv and then prompt to a bash session. But how I am gonna achieve that?










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I try to make a custom python docker image that spawns a bash session with virtualenv pre-loaded. In order to achieve that I created a entrypoint.sh script:



      #!/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


      And I use the following Dockerfile in order to build de docker image:



      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


      But now I am stack to this: When I need to launch a virtualenv I run the following command on an active bash session:



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


      And then I activate my virtualenv, but what I want to achieve is to make bash create first the python virtualenv and then prompt to a bash session. But how I am gonna achieve that?










      share|improve this question













      I try to make a custom python docker image that spawns a bash session with virtualenv pre-loaded. In order to achieve that I created a entrypoint.sh script:



      #!/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


      And I use the following Dockerfile in order to build de docker image:



      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


      But now I am stack to this: When I need to launch a virtualenv I run the following command on an active bash session:



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


      And then I activate my virtualenv, but what I want to achieve is to make bash create first the python virtualenv and then prompt to a bash session. But how I am gonna achieve that?







      bash shell-script docker






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      Dimitrios Desyllas

      16314




      16314

























          active

          oldest

          votes











          Your Answer








          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "106"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: false,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: null,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482174%2fbash-load-virtualenv-on-launch-as-non-root-user-in-docker%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown






























          active

          oldest

          votes













          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f482174%2fbash-load-virtualenv-on-launch-as-non-root-user-in-docker%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown






          Popular posts from this blog

          How to check contact read email or not when send email to Individual?

          Bahrain

          Postfix configuration issue with fips on centos 7; mailgun relay