Я создал свой собственный модуль в python с именем myapp
, который я хочу запустить внутри контейнера. Этот модуль содержит некоторые специфические c файлы, связанные с оборудованием, поэтому он работает на моем модуле Raspberry Pi и не может быть запущен на локальной машине. Но когда я пытаюсь создать образ, создавая виртуальную среду и пытаясь установить модуль, используя RUN pip3 install myapp
, он выдает ошибку, говорящую
Unsupported setsockopt level=0 optname=32
Traceback (most recent call last):
File "/usr/bin/myapp", line 11, in <module>
load_entry_point('myapp==0.0.0', 'console_scripts', 'myapp')()
File "/usr/lib/python3.6/site-packages/myapp/main.py", line 11, in main
asyncio.get_event_loop().run_until_complete(async_main())
File "/usr/lib/python3.6/asyncio/base_events.py", line 484, in run_until_complete
return future.result()
File "/usr/lib/python3.6/site-packages/myapp/main.py", line 6, in async_main
await client.connect()
File "/usr/lib/python3.6/site-packages/vbus/__init__.py", line 31, in connect
await self._nats.async_connect()
File "/usr/lib/python3.6/site-packages/vbus/nats.py", line 63, in async_connect
server_url = await self._find_vbus_url(config)
File "/usr/lib/python3.6/site-packages/vbus/nats.py", line 139, in _find_vbus_url
server_url = strategy()
File "/usr/lib/python3.6/site-packages/vbus/nats.py", line 126, in get_from_zeroconf
return zeroconf_search()
File "/usr/lib/python3.6/site-packages/vbus/helpers.py", line 118, in zeroconf_search
zc = Zeroconf()
File "/usr/lib/python3.6/site-packages/zeroconf/__init__.py", line 2153, in __init__
interfaces, unicast, ip_version, apple_p2p=apple_p2p
File "/usr/lib/python3.6/site-packages/zeroconf/__init__.py", line 2081, in create_sockets
respond_socket = add_multicast_member(cast(socket.socket, listen_socket), i, apple_p2p=apple_p2p)
File "/usr/lib/python3.6/site-packages/zeroconf/__init__.py", line 2059, in add_multicast_member
socket.IPPROTO_IP, socket.IP_MULTICAST_IF, socket.inet_aton(cast(str, interface))
OSError: [Errno 92] Protocol not available
Теперь я удалил RUN pip3 install myapp
из Dockerfile и попытался построить контейнер, и это было успешно. Затем я загрузил контейнер в Raspberry Pi, вручную запустил команду pip3 install myapp
и обнаружил новую проблему, которая говорит:
The directory '/.cache/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
The directory '/.cache/pip' or its parent directory is not owned by the current user and caching wheels has been disabled. check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Requirement already satisfied: myapp in /usr/lib/python3.6/site-packages (0.0.0)
Exception:
Traceback (most recent call last):
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py", line 143, in main
status = self.run(options, args)
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/commands/install.py", line 318, in run
resolver.resolve(requirement_set)
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/resolve.py", line 102, in resolve
self._resolve_one(requirement_set, req)
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/resolve.py", line 318, in _resolve_one
add_req(subreq, extras_requested=available_requested)
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/resolve.py", line 275, in add_req
wheel_cache=self.wheel_cache,
File "/app/myapp/venv/lib/python3.6/site-packages/pip/_internal/req/constructors.py", line 288, in install_req_from_req
if req.url and comes_from.link.netloc in domains_not_allowed:
AttributeError: 'NoneType' object has no attribute 'netloc'
(venv) 6155edc5bb29:/app$ You are using pip version 18.1, however version 20.1b1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
В первой строке этой ошибки я попытался предоставить полное разрешение для каталог /.cache
, но при входе в контейнер такой папки не было, чтобы проверить текущие разрешения для этого каталога. Я полностью запутался, пытаясь решить это. Любая помощь будет оценена.