Можно ли использовать часы Docker Compose с изображением, созданным Earthfile?

Итак, мне нужно запустить этот простой код.

import streamlit as st 

st.title("hellobored")

Я создал образ этого кода в докере с помощью простого файла Earth с помощью команды earthly +all

VERSION 0.8
streamlit: 
    FROM python:3.11-slim
    WORKDIR /src/app
    RUN apt-get update && apt-get install -y curl
    RUN python -m pip install --upgrade pip
    RUN pip install streamlit
    COPY ./hellobored.py /src/app/hellobored.py
    RUN ls
    EXPOSE 8501
    ENTRYPOINT ["streamlit", "run", "/src/app/hellobored.py", "--server.port=8501"]
    SAVE IMAGE hellobored

all: 
    BUILD +streamlit

У меня есть файл Docker Compose, который выглядит так:

version: '3.8'
services:   
  streamlit:
    image: hellobored
    ports:
      - "8501:8501"
    develop: 
      watch:
      - path: ./
        action: rebuild
      - path: ./
        target: /src/app/
        action: sync 

Я уже пробовал использовать перестройку или синхронизацию отдельно, но оба, похоже, не работают. Я использовал docker compose up -d и docker compose watch, чтобы увидеть проблему, связанную с просмотром, и получил эту ошибку при перестроении:

[+] Запуск 1/0 вручную ✔ Контейнер hellobored-streamlit-1 Выполняется 0,0 с. не могу смотреть сервис "streamlit" с перестройкой действий без контекста сборки

И эта ошибка синхронизации:

[+] Бег 1/0 ✔ Контейнер hellobored-streamlit-1 Выполняется 0,0 с. ни одна из выбранных служб не настроена для просмотра. Рассмотрите возможность создания раздела «Разработка».

Я не могу найти в сети способ предоставить Docker Compose контекст сборки для Earthly, поэтому спрашиваю здесь. Обратите внимание: мне нужно, чтобы сборку выполнила Earthly, потому что образы, которые я создаю, имеют размер 10 ГБ, и Earthly может скомпилировать их за секунды. Мне нужно посмотреть, потому что пересобирать и перезагружать вручную после каждого изменения было бы очень долго.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
227
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я получил ответ! Вам просто нужно добавить контекст сборки. Почему? Понятия не имею, но это работает, поэтому я доволен.

version: '3.8'
services:   
  streamlit:
    image: hellobored
    build:
      context: .
    ports:
      - "8501:8501"
    develop: 
      watch:
      - path: ./
        target: /src/app/
        action: sync 
Ответ принят как подходящий

В вашей первоначальной настройке команда docker-compose-watch завершилась неудачно, поскольку не был указан контекст сборки. Docker Compose требует контекста сборки для отслеживания изменений и запуска перестроений. Без контекста сборки команда watch не может определить, какие файлы отслеживать на наличие изменений.

build:
  context: .

Другие вопросы по теме

Похожие вопросы

Как добавить подсказку типа к переменной, представляющей себя, в статическом методе внутри класса
Как определить новые значения и отсортировать их по этим значениям при объединении списка с самим собой?
Кумулятивная совокупность списка полярностей[struct[]]
Синтаксическая ошибка: здесь невозможно назначить вызов функции. Возможно, вы имели в виду «==» при использовании os.environ в Python
Как правильно формировать сообщения веб-сокета в библиотеке сокетов Python
Может ли scipy.optimize найти оптимальные входные значения, когда задействовано несколько продуктов?
Используя Pandas, создайте новый столбец из фрагмента строки другого столбца - получите NAN
Появление упоминания «Chrome для тестирования» при использовании chromedriver для моего проекта Selenium Python
Модуль «pygments.lexer» не найден при запуске Spyder из миниконды
Создание категориальных данных из двух столбцов в пандах