使用python-cod在Docker容器之间共享卷

2024-09-27 18:24:04 发布

您现在位置:Python中文网/ 问答频道 /正文

也许我错了,但我似乎不能让运行自定义python代码的两个docker容器之间的共享卷工作。在

我正在使用下面的docker-合成.yml公司名称:

version: "2"

services:
    rabbitmq:
        image: username/rabbitmq
        ports:
            - 15672:15672
            - 5672:5672
    producer:
        image: username/producer
        depends_on:
            - rabbitmq
        volumes:
            - pdffolder:/temp
    consumer:
        image: username/consumer
        depends_on:
            - producer
        volumes:
            - pdffolder:/temp
volumes:
    pdffolder:

其想法是生产者服务轮询exchange服务器以获取信息和pdf文件。然后消费者服务必须将这些信息和pdf文件发送到其他地方。在这个动作中,我必须在本地临时存储pdf文件。在

我从自定义python代码访问卷,如下所示:

制作人

^{pr2}$

消费者

# consumer tries to find path created by producer (/temp/attachment.pdf) via
pdf_path = os.path.join("temp", "attachment.pdf")

通过命令行,我可以看到producer容器正在将文件写入temp/附件.pdf和预期的一样。但是,使用者在容器中没有看到错误。在

顺便说一句,我正在docker for windows上运行容器


Tags: producer文件pathdocker代码imagepdfconsumer
1条回答
网友
1楼 · 发布于 2024-09-27 18:24:04

我想我已经知道怎么了。我在Dockerfiles中为生产者和消费者使用了以下内容:

FROM python:3.7-slim
WORKDIR /main
ADD . /main
RUN pip install  trusted-host pypi.python.org -r requirements.txt
CMD ["python", "-u", "main.py"]

因为我将python代码移到了两个容器中的/main文件夹中,所以稍后创建的temp文件夹(通过docker compose)位于/main/temp,而不仅仅是/temp。有点奇怪因为主.py应该与/temp处于同一级别,但是它很管用。我和下面的码头工人一起工作-合成.yml公司名称:

^{pr2}$

所以我想调试的步骤是:

  • 检查docker中所有提到的卷的拼写-合成.yml文件
  • 检查python代码中构建/引用路径的方式(Linux使用与windows不同的格式)
  • 检查必须从python代码访问的路径是否确实存在

相关问题 更多 >

    热门问题