在 docker 中处理 python 应用程序的文件权限的正确方法是什么?

问题描述 投票:0回答:1

我正在尝试在 python3.6 docker 基础映像(linux)上安装 python 应用程序。我一直在尝试使用虚拟环境,尽管有些人建议不要在 docker 中这样做。我可以看到需求已安装在虚拟环境的 python 站点包中,但是当我在激活虚拟环境后从源目录运行代码时,出现权限错误。

我的 Dockerfile:

FROM python:3.6

WORKDIR /opt

# create a virtual environment and add it to PATH so that it is 
applied for all future RUN and CMD calls (doesn't work)
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"

# Install Mono for pythonnet.
RUN apt-get update \
    && apt-get install --yes \
    apt-transport-https \
    git \
    dirmngr \
    clang \
    gnupg \
    ca-certificates \
    && apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 -- 
recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF \
&& echo "deb http://download.mono-project.com/repo/debian 
stretch/snapshots/5.20 main" | tee /etc/apt/sources.list.d/mono- 
official-stable.list \
&& apt-get update \
&& apt-get install --yes \
&& rm -rf /var/lib/apt/lists/*

COPY requirements.txt .
COPY src ./src
COPY setup.py ./setup.py
COPY config.json ./config.json
COPY Utility.dll ./Utility.dll
COPY settings.ini ./settings.ini
COPY redis_conf.json ./redis_conf.json
COPY sql_config.json ./sql_config.json

RUN python3 -m venv $VIRTUAL_ENV \
# From here on, use virtual env's python.
&& venv/bin/pip install --upgrade pip \
&& venv/bin/pip install --no-cache-dir --upgrade pip setuptools wheel \

&& venv/bin/pip install --no-cache-dir -r requirements.txt \

&& venv/bin/pip install --no-cache-dir pycparser \

&& venv/bin/pip install -U  --no-cache-dir "pythonnet==2.5.1" \

&& venv/bin/python setup.py install

我检查了 venv/lib/python3.6/site-packages,可以看到这些软件包已安装。但是当我运行这个时: venv/lib/python3.6 src/my_app/app.py

我收到以下错误: /bin/sh: 3: venv/lib/python3.6: 权限被拒绝

我尝试在 lib 目录中运行 chmod +x * ,错误代码发生了变化,但我仍然遇到相同的错误。我不确定我必须做什么才能让它发挥作用。有什么想法吗?

linux docker permissions python-3.6
1个回答
0
投票

如果您想访问文件夹或文件...使用 chmod

sudo chmod -R 777 ./.venv/
© www.soinside.com 2019 - 2024. All rights reserved.