Итак, мне нужно запустить этот простой код.
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 может скомпилировать их за секунды. Мне нужно посмотреть, потому что пересобирать и перезагружать вручную после каждого изменения было бы очень долго.






Я получил ответ! Вам просто нужно добавить контекст сборки. Почему? Понятия не имею, но это работает, поэтому я доволен.
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: .
Ваш ответ можно улучшить, добавив дополнительную вспомогательную информацию. Пожалуйста, отредактируйте , добавив дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Более подробную информацию о том, как писать хорошие ответы, вы можете найти в справочном центре.