Вопрос или проблема
Я новичок в Docker, поэтому не уверен, как интерпретировать причины ошибок.
“Poetry – это инструмент для управления зависимостями и упаковки в Python. Он позволяет вам объявлять библиотеки, от которых зависит ваш проект, и он будет управлять (устанавливать/обновлять) ими за вас.”
pip
не работает, так как я не предоставил учетные данные. Как мне добавить свои учетные данные в свой файл url
или pytest.conf
?
Обновление: я создал файл pip.conf
.
Теперь в docker build
значительно больше успешных установок. Однако, все равно не удается.
pip.conf
(PAT
скрыт):
[global]
extra-index-url=https://<PAT>@pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple'
ls
:
me@LAPTOP-G1DAPU88:~/.ssh/workers-python/workers/ontology_tagger$ ls
Dockerfile README.md azure-pipeline-ontology_tagger.yaml ontology_tagger poetry.lock pyproject.toml pytest.ini wss-unified-agent.config wss_agent.sh
pytest.ini
:
[pytest]
markers =
integration: создать конечную точку и протестировать возвращенные доверительные интервалы
unit: исследовать результаты самой последней обученной модели на выбранных входных данных
testpaths = tests/
Проблема с учетными данными
danielbellio@LAPTOP-G1DAPU88:~/.ssh/workers-python/workers/ontology_tagger$ docker build --no-cache -t my_app -f /home/danielbellio/.ssh/workers-python/workers/ontology_tagger/Dockerfile .
[+] Строительство 1880.1s (16/23)
=> [internal] загрузка определения сборки из Dockerfile 0.0s
=> => передача dockerfile: 38B 0.0s
=> [internal] загрузка .dockerignore 0.0s
=> => передача контекста: 2B 0.0s
=> [internal] загрузка метаданных для docker.io/library/python:3.7-slim 8.8s
=> [auth] library/python:pull токен для registry-1.docker.io 0.0s
=> КЭШ [base 1/7] ИЗ docker.io/library/python:3.7-slim@sha256:798c7c77f4bba96b35de5fe9832b81084dcc4c1c52806d7976bf9233c7c3c4a6 0.0s
=> [internal] загрузка контекста сборки 0.1s
=> => передача контекста: 2.13kB 0.0s
=> КЭШ https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py 0.0s
=> [base 2/7] RUN apt-get update -y && apt-get -y --no-install-recommends install curl wget && rm -rf /var/lib/apt/lists/* 14.7s
=> [base 3/7] WORKDIR /home/worker/python/ontology_tagger 0.1s
=> [base 4/7] ADD https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py ./ 0.1s
=> [base 5/7] RUN python get-poetry.py && chmod +x /etc/poetry/bin/poetry 59.4s
=> [base 6/7] RUN --mount=type=cache,target=/root/.cache pip install twine keyring artifacts-keyring 27.8s
=> [base 7/7] RUN --mount=type=cache,target=/root/.cache apt update && apt install gcc -y 60.4s
=> [build 1/6] COPY . . 0.1s
=> [build 2/6] RUN poetry config experimental.new-installer false 3.0s
=> ОШИБКА [build 3/6] RUN poetry install --no-dev 1705.5s
------
> [build 3/6] RUN poetry install --no-dev:
#16 1.980 Создание virtualenv ontology-tagger в /home/worker/python/ontology_tagger/.venv
#16 7.523 Установка зависимостей из файла блокировки
#16 13.64
#16 13.64 Операции с пакетами: 199 установок, 0 обновлений, 1 удаление
#16 13.64
#16 13.64 - Удаление wheel (0.37.0)
#16 15.02 - Установка six (1.16.0)
#16 16.84 - Установка typing-extensions (3.10.0.0)
#16 17.93 - Установка zipp (3.5.0)
#16 19.00 - Установка certifi (2021.5.30)
#16 20.10 - Установка charset-normalizer (2.0.4)
#16 21.21 - Установка greenlet (1.1.1)
#16 23.46 - Установка idna (3.2)
#16 24.81 - Установка importlib-metadata (4.6.3)
#16 26.52 - Установка ipython-genutils (0.2.0)
#16 28.13 - Установка markupsafe (2.0.1)
#16 29.85 - Установка promise (2.3)
#16 32.66 - Установка pyasn1 (0.4.8)
#16 35.22 - Установка pycparser (2.20)
#16 36.56 - Установка pytz (2021.1)
#16 38.94 - Установка rx (1.6.1)
#16 40.94 - Установка urllib3 (1.26.6)
#16 42.25 - Установка attrs (21.2.0)
#16 43.99 - Установка cachetools (4.2.2)
#16 45.63 - Установка cffi (1.14.6)
#16 47.33 - Установка graphql-core (2.3.2)
#16 49.38 - Установка grpcio (1.39.0)
#16 58.20 - Установка heapdict (1.0.1)
#16 60.10 - Установка humanfriendly (9.2)
#16 61.95 - Установка jmespath (0.10.0)
#16 63.62 - Установка locket (0.2.1)
#16 65.39 - Установка mako (1.1.4)
#16 67.76 - Установка numpy (1.21.1)
#16 79.65 - Установка oauthlib (3.1.1)
#16 81.43 - Установка protobuf (3.17.3)
#16 84.52 - Установка pyasn1-modules (0.2.8)
#16 86.70 - Установка pyparsing (2.4.7)
#16 88.44 - Установка pyrsistent (0.18.0)
#16 90.19 - Установка python-dateutil (2.8.2)
#16 92.69 - Установка python-editor (1.0.4)
#16 95.69 - Установка pytzdata (2020.1)
#16 98.10 - Установка pyyaml (5.3.1)
#16 101.9 - Установка requests (2.26.0)
#16 103.1 - Установка rsa (4.7.2)
#16 104.7 - Установка sqlalchemy (1.4.22)
#16 109.0 - Установка toolz (0.11.1)
#16 110.9 - Установка traitlets (5.0.5)
#16 113.0 - Установка tzlocal (1.5.1)
#16 116.0 - Установка zope.event (4.5.0)
#16 117.6 - Установка zope.interface (5.4.0)
#16 120.6 - Установка alembic (1.4.1)
#16 124.2 - Установка aniso8601 (7.0.0)
#16 125.9 - Установка backports.entry-points-selectable (1.1.0)
#16 127.9 - Установка botocore (1.21.19)
#16 135.5 - Установка click (7.1.2)
#16 137.3 - Установка cloudpickle (1.6.0)
#16 138.9 - Установка coloredlogs (14.0)
#16 140.5 - Установка contextlib2 (21.6.0)
#16 142.2 - Установка croniter (1.0.15)
#16 144.1 - Установка dask (2.30.0)
#16 147.4 - Установка dill (0.3.4)
#16 149.2 - Установка distlib (0.3.2)
#16 151.5 - Установка docstring-parser (0.7.1)
#16 760.1 - Установка filelock (3.0.12)
#16 762.5 - Установка fsspec (2021.7.0)
#16 766.0 - Установка funcsigs (1.0.2)
#16 768.2 - Установка future (0.18.2)
#16 778.4 - Установка gevent (21.8.0)
#16 810.7 - Установка google-auth (1.34.0)
#16 813.7 - Установка graphql-relay (2.0.1)
#16 815.7 - Установка grpcio-health-checking (1.39.0)
#16 817.7 - Установка itsdangerous (1.1.0)
#16 821.3 - Установка jinja2 (2.11.3)
#16 824.1 - Установка jsonschema (3.2.0)
#16 826.4 - Установка jupyter-core (4.7.1)
#16 828.7 - Установка marshmallow (3.13.0)
#16 831.3 - Установка msgpack (1.0.2)
#16 834.3 - Установка multidict (5.1.0)
#16 839.0 - Установка mypy-extensions (0.4.3)
#16 841.2 - Установка packaging (20.9)
#16 843.7 - Установка pandas (1.1.4)
#16 895.7 - Установка partd (1.2.0)
#16 898.7 - Установка pendulum (1.4.4)
#16 914.4 - Установка pillow (8.3.1)
#16 947.3 - Установка platformdirs (2.2.0)
#16 949.7 - Установка psutil (5.8.0)
#16 952.9 - Установка requests-oauthlib (1.3.0)
#16 955.5 - Установка smmap (4.0.0)
#16 958.1 - Установка sortedcontainers (2.4.0)
#16 960.0 - Установка tabulate (0.8.9)
#16 962.5 - Установка tblib (1.7.0)
#16 965.8 - Установка toposort (1.6)
#16 969.3 - Установка tornado (6.1)
#16 973.7 - Установка tqdm (4.49.0)
#16 976.6 - Установка watchdog (2.1.3)
#16 979.4 - Установка webencodings (0.5.1)
#16 981.2 - Установка websocket-client (0.59.0)
#16 983.9 - Установка werkzeug (1.0.1)
#16 986.8 - Установка zict (2.0.0)
#16 989.2 - Установка absl-py (0.13.0)
#16 992.2 - Установка async-timeout (3.0.1)
#16 994.5 - Установка bleach (4.0.0)
#16 996.7 - Установка bokeh (2.3.3)
#16 1020.0 - Установка cached-property (1.5.2)
#16 1023.2 - Установка cfgv (3.3.0)
#16 1025.6 - Установка chardet (4.0.0)
#16 1028.7 - Установка colorama (0.4.4)
#16 1030.6 - Установка configparser (5.0.2)
#16 1032.8 - Установка cycler (0.10.0)
#16 1035.1 - Установка dagster (0.9.22.post0)
#16 1041.2 - Установка defusedxml (0.7.1)
#16 1043.7 - Установка distributed (2.30.1)
#16 1049.5 - Установка distro (1.6.0)
#16 1052.8 - Установка docker (5.0.0)
#16 1055.5 - Установка dockerpty (0.4.1)
#16 1059.3 - Установка docopt (0.6.2)
#16 1064.4 - Установка entrypoints (0.3)
#16 1067.1 - Установка flask (1.1.4)
#16 1069.8 - Установка gevent-websocket (0.10.1)
#16 1072.8 - Установка gitdb (4.0.7)
#16 1075.4 - Установка google-auth-oauthlib (0.4.5)
#16 1078.1 - Установка graphene (2.1.9)
#16 1081.4 - Установка graphql-server-core (1.2.0)
#16 1085.9 - Установка identify (2.2.13)
#16 1089.3 - Установка joblib (1.0.1)
#16 1092.6 - Установка kiwisolver (1.3.1)
#16 1095.8 - Установка markdown (3.3.4)
#16 1099.0 - Установка marshmallow-enum (1.5.1)
#16 1101.4 - Установка mistune (0.8.4)
#16 1104.0 - Установка multiprocess (0.70.12.2)
#16 1107.9 - Установка nbformat (5.1.3)
#16 1111.8 - Установка nodeenv (1.6.0)
#16 1114.9 - Установка pandocfilters (1.4.3)
#16 1121.0 - Установка pathspec (0.8.1)
#16 1123.2 - Установка plumbum (1.7.0)
#16 1125.3 - Установка pox (0.3.0)
#16 1127.4 - Установка ppft (1.6.6.4)
#16 1129.2 - Установка prometheus-client (0.11.0)
#16 1131.2 - Установка pydantic (1.8.2)
#16 1136.3 - Установка pygments (2.9.0)
#16 1139.9 - Установка pymongo (3.12.0)
#16 1143.5 - Установка python-dotenv (0.19.0)
#16 1145.5 - Установка pyyaml-include (1.2.post2)
#16 1147.6 - Установка regex (2020.11.13)
#16 1151.2 - Установка s3transfer (0.5.0)
#16 1153.2 - Установка stringcase (1.2.0)
#16 1157.5 - Установка tensorboard-data-server (0.6.1)
#16 1161.9 - Установка tensorboard-plugin-wit (1.8.0)
#16 1165.3 - Установка testpath (0.5.0)
#16 1167.8 - Установка texttable (1.6.4)
#16 1170.2 - Установка toml (0.10.2)
#16 1172.8 - Установка torch (1.7.1)
#16 1469.6 - Установка typing-inspect (0.7.1)
#16 1472.3 - Установка virtualenv (20.7.2)
#16 1478.0 - Установка yarl (1.6.3)
#16 1481.9 - Установка aiohttp (3.7.4.post0)
#16 1488.6 - Установка autologging (1.3.2)
#16 1491.0 - Установка boto3 (1.18.19)
#16 1495.9 - Установка copier (5.1.0)
#16 1498.8 - Установка cryptography (3.4.7)
#16 1502.4 - Установка dagster-dask (0.9.22.post0)
#16 1506.1 - Установка dagster-graphql (0.9.22.post0)
#16 1509.5 - Установка databricks-cli (0.15.0)
#16 1514.2 - Установка dataclasses-json (0.5.4)
#16 1517.4 - Установка docker-compose (1.29.2)
#16 1521.0 - Установка flask-cors (3.0.10)
#16 1523.4 - Установка flask-graphql (2.0.1)
#16 1527.9 - Установка flask-sockets (0.2.1)
#16 1530.5 - Установка gitpython (3.1.20)
#16 1533.5 - Установка google-pasta (0.2.0)
#16 1536.4 - Установка graphql-ws (0.3.1)
#16 1539.7 - Установка gunicorn (20.1.0)
#16 1543.7 - Установка huggingface-hub (0.0.2)
#16 1546.6 - Установка matplotlib (3.4.2)
#16 1557.1 - Установка minio (6.0.2)
#16 1560.1 - Установка mongoengine (0.20.0)
#16 1562.9 - Установка motor (2.5.0)
#16 1565.5 - Установка nbconvert (5.6.1)
#16 1569.7 - Установка pathos (0.2.8)
#16 1572.6 - Установка pre-commit (2.14.0)
#16 1576.3 - Установка prometheus-flask-exporter (0.18.2)
#16 1581.1 - Установка protobuf3-to-dict (0.1.5)
#16 1586.2 - Установка psycopg2-binary (2.9.1)
#16 1590.0 - Установка pyarrow (2.0.0)
#16 1603.1 - Установка querystring-parser (1.2.4)
#16 1607.8 - Установка sacremoses (0.0.45)
#16 1615.6 - Установка scipy (1.7.1)
#16 1634.3 - Установка smdebug-rulesconfig (1.0.1)
#16 1637.7 - Установка sqlparse (0.4.1)
#16 1640.8 - Установка tensorboard (2.6.0)
#16 1653.9 - Установка threadpoolctl (2.2.0)
#16 1657.0 - Установка tokenizers (0.10.3)
#16 1664.0 - Установка torchmetrics (0.3.2)
#16 1668.0 - Установка xxhash (2.0.2)
#16 1671.7 - Установка dagit (0.9.22.post0)
#16 1676.9 - Установка dagster-aws (0.9.22.post0)
#16 1680.8 - Установка dagster-pandas (0.9.22.post0)
#16 1685.5 - Установка dagster-postgres (0.9.22.post0)
#16 1689.3 - Установка datasets (1.4.1)
#16 1692.6 - Установка mlflow (1.15.0)
#16 1701.5 - Установка pwmf (0.1.3.1.dev1)
#16 1704.6
#16 1704.6 EnvCommandError
#16 1704.6
#16 1704.6 Команда ['/home/worker/python/ontology_tagger/.venv/bin/pip', 'install', '--no-deps', '--index-url', 'https://pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple', 'pwmf==0.1.3.1.dev1'] завершилась ошибкой с кодом возврата 2 и выводом:
#16 1704.6 Поиск индексов: https://pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple
#16 1704.6 Пользователь для pkgs.dev.azure.com: ОШИБКА: Исключение:
#16 1704.6 Трассировка (последний вызов последний):
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/cli/base_command.py", строка 216, в _main
#16 1704.6 статус = self.run(options, args)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/cli/req_command.py", строка 182, в обертке
#16 1704.6 вернуть func(self, options, args)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/commands/install.py", строка 325, в run
#16 1704.6 reqs, check_supported_wheels=not options.target_dir
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", строка 183, в resolve
#16 1704.6 discovered_reqs.extend(self._resolve_one(requirement_set, req))
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", строка 388, в _resolve_one
#16 1704.6 abstract_dist = self._get_abstract_dist_for(req_to_install)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", строка 339, в _get_abstract_dist_for
#16 1704.6 self._populate_link(req)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", строка 305, в _populate_link
#16 1704.6 req.link = self._find_requirement_link(req)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/resolution/legacy/resolver.py", строка 270, в _find_requirement_link
#16 1704.6 best_candidate = self.finder.find_requirement(req, upgrade)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/package_finder.py", строка 899, в find_requirement
#16 1704.6 req.name, specifier=req.specifier, hashes=hashes,
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/package_finder.py", строка 881, в find_best_candidate
#16 1704.6 кандидаты = self.find_all_candidates(project_name)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/package_finder.py", строка 826, в find_all_candidates
#16 1704.6 project_url, link_evaluator=link_evaluator,
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/package_finder.py", строка 790, в process_project_url
#16 1704.6 html_page = self._link_collector.fetch_page(project_url)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/collector.py", строка 643, в fetch_page
#16 1704.6 вернуть _get_html_page(location, session=self.session)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/collector.py", строка 455, в _get_html_page
#16 1704.6 resp = _get_html_response(url, session=session)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/index/collector.py", строка 169, в _get_html_response
#16 1704.6 "Cache-Control": "max-age=0",
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_vendor/requests/sessions.py", строка 543, в get
#16 1704.6 вернуть self.request('GET', url, **kwargs)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/network/session.py", строка 421, в request
#16 1704.6 вернуть super(PipSession, self).request(method, url, *args, **kwargs)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_vendor/requests/sessions.py", строка 530, в request
#16 1704.6 r = dispatch_hook('response', hooks, r, **kwargs)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_vendor/requests/hooks.py", строка 31, в dispatch_hook
#16 1704.6 _hook_data = hook(hook_data, **kwargs)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/network/auth.py", строка 256, в handle_401
#16 1704.6 username, password, save = self._prompt_for_password(parsed.netloc)
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/network/auth.py", строка 226, в _prompt_for_password
#16 1704.6 username = ask_input("Пользователь для {}: ".format(netloc))
#16 1704.6 Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/utils/misc.py", строка 259, в ask_input
#16 1704.6 return input(message)
#16 1704.6 EOFError: EOF при чтении строки
#16 1704.6 ПРЕДУПРЕЖДЕНИЕ: Вы используете версию pip 20.2.2; однако доступна версия 21.2.4.
#16 1704.6 Вы должны рассмотреть возможность обновления через команду '/home/worker/python/ontology_tagger/.venv/bin/python -m pip install --upgrade pip'.
#16 1704.6
#16 1704.6
#16 1704.6 в /etc/poetry/lib/poetry/utils/env.py:1074 в _run
#16 1704.8 1070│ output = subprocess.check_output(
#16 1704.8 1071│ cmd, stderr=subprocess.STDOUT, **kwargs
#16 1704.8 1072│ )
#16 1704.8 1073│ кроме CalledProcessError как e:
#16 1704.8 → 1074│ raise EnvCommandError(e, input=input_)
#16 1704.8 1075│
#16 1704.8 1076│ вернуть decode(output)
#16 1704.8 1077│
#16 1704.9 1078│ def execute(self, bin, *args, **kwargs):
------
исполнитель завершил работу [/bin/sh -c poetry install --no-dev]: код выхода: 1
Dockerfile
(строки 5–7):
#https://github.com/moby/buildkit/blob/master/frontend/dockerfile/docs/syntax.md
#требуется установить DOCKER_BUILDKIT=1
FROM python:3.7-slim as base
RUN apt-get update -y \
&& apt-get -y --no-install-recommends install curl wget\
&& rm -rf /var/lib/apt/lists/*
ENV ROOT /home/worker/python/ontology_tagger
WORKDIR $ROOT
ARG ATLASSIAN_TOKEN
ARG POETRY_HTTP_BASIC_AZURE_PASSWORD
ARG ACCESS_KEY
ENV AWS_ACCESS_KEY_ID=$ACCESS_KEY
ARG SECRET_KEY
ENV AWS_SECRET_ACCESS_KEY=$SECRET_KEY
ARG REPO
ENV REPO_URL=$REPO
# Скопируйте/сделайте символическую ссылку на файл pypic в контексте докера перед запуском сборки докера
ENV PYPIRC_PATH=$ROOT/.pypirc
ENV \
PYTHONFAULTHANDLER=1 \
POETRY_VERSION=1.1.4 \
POETRY_HOME=/etc/poetry \
XDG_CACHE_HOME=/home/worker/.cache \
POETRY_VIRTUALENVS_IN_PROJECT=true \
MPLCONFIGDIR=/home/worker/matplotlib \
PATH=/home/worker/python/ontology_tagger/.venv/bin:/usr/local/bin:/etc/poetry/bin:$PATH
# Системные зависимости:
ADD https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py ./
RUN python get-poetry.py && chmod +x /etc/poetry/bin/poetry
# Копируйте только зависимости, чтобы кэшировать их в слое докера
RUN --mount=type=cache,target=/root/.cache pip install twine keyring artifacts-keyring
RUN --mount=type=cache,target=/root/.cache apt update && apt install gcc -y
FROM base as ws
ARG WS_APIKEY
ARG WS_PROJECTVERSION=
ARG WS_PROJECTNAME=workers-python-ontology_tagger
ARG WS_PRODUCTNAME=HALO
COPY --chown=worker:worker . .
RUN --mount=type=cache,uid=1000,target=/home/worker/.cache poetry install --no-dev
COPY --from=openjdk:15-slim-buster /usr/local/openjdk-15 /usr/local/openjdk-15
ENV JAVA_HOME /usr/local/openjdk-15
ENV PATH $JAVA_HOME/bin:$PATH
RUN --mount=type=cache,uid=1000,target=/home/worker/.cache ./wss_agent.sh
FROM base as test
COPY . .
RUN poetry config experimental.new-installer false
RUN poetry install
RUN cd ontology_tagger && poetry run invoke deploy
# RUN sphinx-build -b confluence -Q docs/source docs/build -E -a -D confluence_server_pass=$ATLASSIAN_TOKEN
FROM base as package
COPY . .
RUN poetry build
RUN python -m pip install --upgrade pip && \
pip install twine keyring artifacts-keyring && \
twine upload -r $REPO_URL --config-file $PYPIRC_PATH dist/* --skip-existing
FROM base as build
COPY . .
RUN poetry config experimental.new-installer false
RUN poetry install --no-dev
RUN pip3 --no-cache-dir install --upgrade awscli
RUN aws s3 cp s3://iotahoe-datascience/python_workers/dbpedia/output/ontologytagger-2021-05-23-20-49-40-099/output/model.tar.gz $ROOT/ontology_tagger
RUN mkdir $ROOT/ontology_tagger/bert-base-cased && cd $ROOT/ontology_tagger/bert-base-cased && \
wget https://huggingface.co/bert-base-cased/resolve/main/config.json && \
wget https://huggingface.co/bert-base-cased/resolve/main/tokenizer.json && \
wget https://huggingface.co/bert-base-cased/resolve/main/tokenizer_config.json
FROM python:3.7-slim as production
ENV ROOT=/home/worker/python/ontology_tagger \
VIRTUAL_ENV=/home/worker/python/ontology_tagger/.venv\
PATH=/home/worker/python/ontology_tagger/.venv/bin:/home/worker/python/ontology_tagger:$PATH
COPY --from=build /home/worker/python/ontology_tagger/pyproject.toml /home/worker/python/
COPY --from=build /home/worker/python/ontology_tagger/.venv /home/worker/python/ontology_tagger/.venv
COPY --from=build /home/worker/python/ontology_tagger/ontology_tagger /home/worker/python/ontology_tagger
WORKDIR $ROOT
ENV PYTHONPATH=$ROOT:/home/worker/python/
# аргументы в формате mongodb://user:pass@mongodb:27017/ops?authSource=admin,ops,jobs,pipelineId-ce6b9dad-0fa1-42f7-a04d-b54d1468dc7f:ontology_tagger_worker
ENTRYPOINT [ "primary_worker", "--mongo" ]
Первая ошибка исправлена, как вы выяснили, путем настройки системных часов.
Вторая ошибка связана с тем, что pip запрашивает пароль.
Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/network/**auth.py", строка 226, в _prompt_for_password**
username = ask_input("Пользователь для {}: ".format(netloc))
Файл "/home/worker/python/ontology_tagger/.venv/lib/python3.7/site-packages/pip/_internal/utils/misc.py", **строка 259, в ask_input**
Так что это означает, что вам нужно будет добавить эти учетные данные в ваш url или pip.conf.
#16 957.2 Команда ['/home/worker/python/ontology_tagger/.venv/bin/pip', 'install', '--no-deps', '--index-url', 'https://pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple', 'pwmf==0.1.3.1.dev1'] завершилась ошибкой с кодом возврата 2 и выводом:
Ответ или решение
Ошибка, которую вы наблюдаете в процессе сборки Docker-контейнера, указывает на проблемы с установкой зависимостей проекта Python с помощью Poetry. В частности, сообщение «executor failed running [/bin/sh -c poetry install –no-dev]: exit code: 1» подразумевает, что во время выполнения команды poetry install --no-dev
происходит сбой. Давайте разбираем проблему по шагам, чтобы понять, где могут быть ошибки, и как их устранить.
1. Ошибка аутентификации
Из журналов, которые вы предоставили, видно, что pip запрашивает учетные данные для доступа к вашему частному репозиторию на Azure. Система сообщает следующее:
User for pkgs.dev.azure.com: ERROR: Exception:
...
username = ask_input("User for {}: ".format(netloc))
Это говорит о том, что pip не может получить доступ к указанному индексу, потому что не знает, какие учетные данные использовать. Как вы уже заметили, чтобы решить эту проблему, вам нужно добавить ваши учетные данные в файл настроек pip (pip.conf
) или в URL-адрес, который вы используете.
2. Файл pip.conf
Ваш файл pip.conf
выглядит следующим образом:
[global]
extra-index-url=https://<PAT>@pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple
В этом файле необходимо заменить <PAT>
на ваш личный токен доступа (Personal Access Token), который вы сможете получить в Azure DevOps. Учтите, что токен доступа нужно хранить в безопасности, так как он предоставит доступ к вашему репозиторию.
3. Упрощение URL
Если вы не хотите добавлять токен доступа в конфигурации, вы можете включить его непосредственно в URL. Однако этот метод менее безопасен:
pip install --index-url=https://username:PAT@pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple <package_name>
Здесь username
также должен быть вашим именем пользователя. Но более безопасным способом будет использование файла настроек.
4. Проверьте правильность настройки Poetry
Убедитесь, что Poetry правильно сконfigурирован для работы с вашими репозиториями. Вы можете использовать следующую команду для добавления вашего репозитория в качестве источника:
poetry config repositories.my-private-repo https://pkgs.dev.azure.com/iotahoe/Halo/_packaging/private-sources/pypi/simple
Затем можете указать учетные данные для доступа:
poetry config http-basic.my-private-repo username PAT
5. Ваша сборка Docker
В вашем Dockerfile
были добавлены аргументы, такие как ARG ATLASSIAN_TOKEN
, ARG POETRY_HTTP_BASIC_AZURE_PASSWORD
и т. д. Убедитесь, что вы правильно передаете эти аргументы при сборке контейнера, например:
docker build --no-cache --build-arg ATLASSIAN_TOKEN=<your_token> --build-arg POETRY_HTTP_BASIC_AZURE_PASSWORD=<your_password> -t my_app .
6. Дополнительные рекомендации
- Убедитесь, что у вас актуальная версия pip, поскольку использование старых версий может привести к неустойчивому поведению.
- Запуск
pip install --upgrade pip
в вашем образе Docker может помочь избежать таких ошибок. - Проверяйте, не блокирует ли что-то доступ к вашим индексам (например, корпоративные файрволы или прокси).
Заключение
Разрешив проблемы с аутентификацией и удостоверившись, что настройки Poetry выполнены правильно, вы сможете избежать ошибок, возникающих при установке зависимостей в вашем Docker-образе. Если после внесения всех предложенных изменений проблемы сохраняются, рассмотрите возможность проверки логов более подробно или обдумывания структуры проекта и зависимости.