Python 在Docker中将pytz作为非根目录与Alpine Linux一起使用会导致;IOError:[ERRNO13]权限被拒绝";

Python 在Docker中将pytz作为非根目录与Alpine Linux一起使用会导致;IOError:[ERRNO13]权限被拒绝";,python,linux,docker,root,Python,Linux,Docker,Root,我有以下Dockerfile(有点精简,核心元素显示在这里) 然后,我以以下方式运行此图像 docker run -d\ -w /home/some_user_name/python/\ -v ~/dockerfiles/mount_this/python:/home/some_user_name/python\ --hostname docker-test --name dock-test\ alpine/

我有以下Dockerfile(有点精简,核心元素显示在这里)

然后,我以以下方式运行此图像

docker run -d\
           -w /home/some_user_name/python/\
           -v ~/dockerfiles/mount_this/python:/home/some_user_name/python\
           --hostname docker-test --name dock-test\
           alpine/01\
           python executor.py settings:docker-lean
容器立即退出,
docker logs
显示以下错误

  File "/home/some_user_name/python/executor_handler.py", line 23, in <module>
    import pytz
  File "/usr/lib/python2.7/site-packages/pytz/__init__.py", line 29, in <module>
    from pkg_resources import resource_stream
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3141, in <module>
    @_call_aside
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3127, in _call_aside
    f(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 3154, in _initialize_master_working_set
    working_set = WorkingSet._build_master()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 631, in _build_master
    ws = cls()
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 624, in __init__
    self.add_entry(entry)
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 680, in add_entry
    for dist in find_distributions(entry, True):
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2122, in find_on_path
    path_item, entry, metadata, precedence=DEVELOP_DIST
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2521, in from_location
    py_version=py_version, platform=platform, **kw
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2838, in _reload_version
    md_version = _version_from_file(self._get_metadata(self.PKG_INFO))
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2486, in _version_from_file
    line = next(iter(version_lines), '')
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2654, in _get_metadata
    for line in self.get_metadata_lines(name):
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1623, in get_metadata_lines
    return yield_lines(self.get_metadata(name))
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1615, in get_metadata
    return self._get(self._fn(self.egg_info, name))
  File "/usr/lib/python2.7/site-packages/pkg_resources/__init__.py", line 1726, in _get
    with open(path, 'rb') as stream:
IOError: [Errno 13] Permission denied: '/usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO'
File”/home/some\u user\u name/python/executor\u handler.py“,第23行,在
进口皮茨
文件“/usr/lib/python2.7/site packages/pytz/_init__.py”,第29行,在
从pkg_资源导入资源_流
文件“/usr/lib/python2.7/site-packages/pkg_-resources/_-init__.py”,第3141行,在
@_把你叫到一边
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第3127行,放在一边
f(*args,**kwargs)
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第3154行,在_initialize_master_working_集中
工作集=工作集。_build_master()
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第631行,在构建主文件中
ws=cls()
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第624行,在_init中__
self.add_条目(条目)
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第680行,在add_条目中
对于find_分布中的dist(条目,True):
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第2122行,位于查找路径中
路径项、条目、元数据、优先级=开发区
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第2521行,位于from_位置
py_版本=py_版本,平台=平台,**千瓦
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第2838行,重新加载版本
md_version=_version_from_文件(self._获取_元数据(self.PKG_信息))
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第2486行,在文件的_版本中
行=下一行(国际热核实验堆(版本线),“”)
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第2654行,在_get_元数据中
对于self.get\u metadata\u行中的行(名称):
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第1623行,在get_metadata_行中
返回yield_行(self.get_元数据(名称))
get_元数据中的文件“/usr/lib/python2.7/site packages/pkg_resources/_init__uuu.py”,第1615行
返回self.\u get(self.\u fn(self.egg\u info,name))
文件“/usr/lib/python2.7/site packages/pkg_resources/_init__.py”,第1726行,在
以open(路径“rb”)作为流:
IOError:[Errno 13]权限被拒绝:'/usr/lib/python2.7/site packages/python_dateutil-2.2-py2.7.egg info/PKG-info'
当我通过向
docker run
命令添加
-u root
选项以
root
身份运行映像时,python脚本会成功执行,但我确实不想以root身份运行容器

我能做些什么来解决这个问题?

好的,我补充道

RUN python -c "import pytz;" &&\
    chmod 644 /usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO
添加到Dockerfile,使其结果如下所示:

FROM alpine:latest

RUN adduser -D some_user_name &&\
    apk add --update alpine-sdk &&\
    apk add --update python-dev &&\
    apk add --update py-dateutil &&\
    apk add --update py-tz

RUN python -c "import pytz;" &&\
    chmod 644 /usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO

USER some_user_name

CMD ["/bin/sh"]
虽然这解决了问题,但这可能需要在
pytz

FROM alpine:latest

RUN adduser -D some_user_name &&\
    apk add --update alpine-sdk &&\
    apk add --update python-dev &&\
    apk add --update py-dateutil &&\
    apk add --update py-tz

RUN python -c "import pytz;" &&\
    chmod 644 /usr/lib/python2.7/site-packages/python_dateutil-2.2-py2.7.egg-info/PKG-INFO

USER some_user_name

CMD ["/bin/sh"]