Настройка requirements.txt в сборке gitpod.yml

#python #requirements.txt #pre-build-event #gitpod

#python #requirements.txt #предварительная сборка-событие #gitpod

Вопрос:

Всякий раз, когда я открываю свое рабочее пространство gitpod, мне приходится переустанавливать requirements.txt досье. Я читал о gitpod.файл yml и вижу, что я должен добавить его туда, чтобы зависимости устанавливались во время предварительной сборки.

Я не могу найти никаких примеров этого, поэтому я просто хочу посмотреть, правильно ли я это понимаю.

Прямо сейчас мой gitpod.файл yml выглядит следующим образом…

     image:
       file: .gitpod.Dockerfile

    # List the start up tasks. Learn more https://www.gitpod.io/docs/config-start-tasks/
    tasks:
      - init: echo 'init script' # runs during prebuild
        command: echo 'start script'
    
    # List the ports to expose. Learn more https://www.gitpod.io/docs/config-ports/
    ports:
      - port: 3000
        onOpen: open-preview

    vscode:
      extensions:
        - ms-python.python
        - ms-azuretools.vscode-docker
        - eamodio.gitlens
        - batisteo.vscode-django
        - formulahendry.auto-close-tag
        - esbenp.prettier-vscode
 

Должен ли я просто добавить эти две новые строки ‘init’ и ‘command’ в разделе задачи?

     image:
      file: .gitpod.Dockerfile

    # List the start up tasks. Learn more https://www.gitpod.io/docs/config-start-tasks/
    tasks:
      - init: echo 'init script' # runs during prebuild
        command: echo 'start script'
      - init: pip3 install -r requirements.txt
        command: python3 manage.py

    # List the ports to expose. Learn more https://www.gitpod.io/docs/config-ports/
    ports:
      - port: 3000
        onOpen: open-preview

    vscode:
      extensions:
        - ms-python.python
        - ms-azuretools.vscode-docker
        - eamodio.gitlens
        - batisteo.vscode-django
        - formulahendry.auto-close-tag
        - esbenp.prettier-vscode
 

Большое спасибо за вашу помощь. Я все еще новичок во всем этом и пытаюсь разобраться.

Ответ №1:

Чтобы установить требования в сборке, вы должны установить их в Dockerfile. Исключением являются редактируемые установки, pip install -e . .

Например, чтобы установить пакет с именем <package-name>, добавьте эту строку в .gitpod.Dockerfile :

 RUN python3 -m pip install <package-name>
 

Установка из файла требований немного сложнее, потому что Dockerfile не может «видеть» файл во время сборки. Одним из обходных путей является предоставление Dockerfile URL-адреса файла требований в репозитории.

 RUN python3 -m pip install -r https://gitlab.com/<gitlab-username>/<repo-name>/-/raw/master/requirements.txt
 

Редактировать: станьте свидетелем моей неловкой борьбы с той же проблемой сегодня: https://github.com/gitpod-io/gitpod/issues/7306