Installing private pip package inside docker container

Question:

I am trying to create docker container for a fastapi application.
This application is going to use a private pip package hosted on github.

During local development, I used the following command to install the dependency:

pip install git+https://<ACCESS_TOKEN>:[email protected]/username/projectname

I tried the same approach inside dockerfile, however without success

FROM python:3.9

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

ARG ACCESS_TOKEN=default_value

RUN /usr/local/bin/python -m pip install --upgrade pip
RUN echo "pip install git+https://${ACCESS_TOKEN}:[email protected]/username/projectname"
RUN pip install --no-cache-dir --upgrade -r requirements.txt

COPY . /code

CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "8080"]
docker build --build-arg ACCESS_TOKEN=access_token_value .

The container builds without errors and during the build process I can see that the token is passed correctly.
However, after running the container with docker run <containerid> I get the following error:

ModuleNotFoundError: No module named 'projectname'

Have anyone tried such thing before?
Is it the correct approach?

Asked By: szachneq

||

Answers:

if I am not mistaken, you could run your pip command without echo:

RUN pip install git+https://${ACCESS_TOKEN}:[email protected]/username/projectname
Answered By: ziggi
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.