Совместное использование переменных в python между различными docker контейнерами - PullRequest
0 голосов
/ 05 марта 2020

У меня python приложение работает в docker контейнере. В моем приложении я кеширую некоторые объекты, так как время их создания слишком велико, чтобы их создавать каждый раз, когда они используются. Теперь я хочу создать несколько контейнеров одного и того же изображения для обработки возможной нагрузки. Приложение на самом деле веб-сервер, предлагающий API. Однако кэшированные объекты были бы одинаковыми для каждого из этих контейнеров, поэтому я подумал, может быть, есть какой-то docker IP C или какая-либо другая функциональность, которая позволяет мне хранить и использовать одни и те же экземпляры этих объектов, чтобы я не стал иметь какие-либо издержки с точки зрения копий тех же объектов в памяти. Есть ли подход, чтобы понять это?

1 Ответ

0 голосов
/ 31 марта 2020

Все контейнеры могут иметь одинаковое монтирование тома. Это упрощенный способ обмена данными между 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

Оба контейнера возможность записи в тот же файл. Вы можете легко распространить это на каталоги, чтобы иметь несколько кэшированных объектов.

...