linux/docker/python没有这样的文件或目录

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

我开始为 Linux 重写软件,发现 python 看不到我电脑中的文件/文件夹。而且,它没有看到所有文件夹/文件,而是一些,(他开始深入研究这个,因为他无法连接sqlite)虽然带有文件的整个目录的权限是chmod 777,但这并没有帮助,他们仍然显然在某些方面有所不同(我有条件地规定了绝对路径 - /home/user/data/...)我向所有目录和内部发出了 chmod 777,在 python 本身中测试了各种验证选项,包括 os、sys、子进程'ls',但他们看不到(尽管来自控制台的 ls 有条件地看到)

import subprocess

file_path = '/home/user/data/logs'

try:
    result = subprocess.run(['ls', file_path], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    print("yes")
except subprocess.CalledProcessError:
    print("no")

此代码将返回“yes”,但如果有条件路径为 /home/user/data/database,它将返回“no”

Dockerfile:

# -------------  Dockerfile --------------

FROM python:3.11-slim-buster

RUN mkdir -p /usr/src/app

WORKDIR /usr/src/app

RUN pip install --no-cache-dir asyncio aiogram scheduler mysql-connector-python pydantic-settings APScheduler pytz asyncio-scheduler pyTelegramBotAPI loguru requests

COPY . /usr/src/app

CMD \["python", "./main.py"\]

路径:

/home/lost0/data/database - 不起作用

/home/lost0/data/logs - 它有效

python linux docker
1个回答
0
投票

你是如何启动docker容器的?当你通过“docker run”启动docker容器时,你是否传递了-v选项?

docker容器内的进程可以访问文件系统,与主机隔离。如果你想让 docker 容器内的程序接触主机中的文件,你应该在启动 docker 容器时

docker run -v /home/user/data/:/home/user/data/ <your-image-name>

顺便说一句,请在大多数情况下不要使用 chmod 777。这不是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.