在不同的Docker容器之间共享python中的变量

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

我有一个在Docker容器中运行的python应用。在我的应用程序中,由于某些对象的创建时间太大而无法在每次使用它们时都创建它们,因此我正在缓存它们。现在,我希望生成同一图像的多个容器以处理可能的负载。该应用实际上是提供API的网络服务器。但是每个容器的缓存对象都是相同的,因此我在考虑是否可能有一些Docker IPC或任何允许我存储和使用这些对象的相同实例的功能,因此我在这方面没有任何开销内存中相同对象的副本。有什么方法可以实现吗?

python docker ipc shared-memory
1个回答
0
投票

这些容器都可以共享同一卷安装。这是在Docker容器之间共享数据的轻量级方法。

例如,我们的“服务器”可以简单地在文件后附加数字:

#!/bin/bash

ID="$RANDOM"

while true ; do
    echo $ID >> /shared.txt
    sleep 1
done

然后我们创建一个Dockerfile

FROM ubuntu:18.04
COPY main.sh /main.sh
CMD ["bash", "/main.sh"]

和docker-compose.yml文件:

version:   '3'
services:
    one:
        build: ./
        volumes:
            - ./shared.txt:/shared.txt
    two:
        build: ./
        volumes:
            - ./shared.txt:/shared.txt

注意两个容器如何装载相同的文件。他们每个人都会看到同一件事。

docker-compose up运行,在一个单独的窗口中,您将看到以下shared.txt的输出:

25277
24626
25277
24626
25277
24626
25277
24626
25277

两个容器都可以写入同一文件。您可以轻松地将其扩展到目录,以便可以拥有多个缓存的对象。

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