При попытке получить доступ к контейнеру оллама из другой службы (узла) в моей настройке создания докера я получаю следующую ошибку:
ResponseError: модель «llama3» не найдена, попробуйте сначала извлечь ее.
Я хочу, чтобы настройка контейнеров была автоматической, и не хочу вручную подключаться к контейнерам и вручную извлекать модели. Есть ли способ автоматически загрузить выбранную мной модель при создании Docker-контейнера ollama?
Вот моя соответствующая часть docker-compose.yml
ollama:
image: ollama/ollama:latest
ports:
- 11434:11434
volumes:
- ./ollama/ollama:/root/.ollama
container_name: ollama
pull_policy: always
tty: true
restart: always
разве докер не всегда Linux? :D
Нет, может работать на другой ОС.
да, тогда линукс


Используйте собственный сценарий точки входа для загрузки модели при запуске контейнера. Модель будет сохранена при монтировании тома, поэтому при последующих запусках это будет происходить быстро.
version: '3.7'
services:
ollama:
image: ollama/ollama:latest
ports:
- 11434:11434
volumes:
- ./ollama/ollama:/root/.ollama
- ./entrypoint.sh:/entrypoint.sh
container_name: ollama
pull_policy: always
tty: true
restart: always
entrypoint: ["/usr/bin/bash", "/entrypoint.sh"]
Ключевые изменения:
entrypoint.entrypoint.sh.Вот содержание entrypoint.sh:
#!/bin/bash
# Start Ollama in the background.
/bin/ollama serve &
# Record Process ID.
pid=$!
# Pause for Ollama to start.
sleep 5
echo "🔴 Retrieve LLAMA3 model..."
ollama pull llama3
echo "🟢 Done!"
# Wait for Ollama process to finish.
wait $pid
ты Г. мне это нравится.
вся русская община будет молиться за тебя, Джи
Это то, что сработало для меня без необходимости дополнительного монтирования для сценария входа.
services:
ollama:
container_name: ollama
pull_policy: always
build:
context: .
dockerfile: ollama.dockerfile
volumes:
- type: bind
source: [your local path here]
target: /root/.ollama
ports:
- "11434:11434"
restart: always
FROM ollama/ollama
# Copy the script to the docker image
COPY ./wait_for_ollama.sh /wait_for_ollama.sh
# Ensure the script is executable
RUN chmod +x /wait_for_ollama.sh
EXPOSE 11434
ENTRYPOINT ["/bin/sh", "/wait_for_ollama.sh"]
Затем я использовал скрипт, предоставленный @datawookie как wait_for_ollama.sh в том же каталоге, что и файл docker.
#!/bin/bash
# Start Ollama in the background.
ollama serve &
# Record Process ID.
pid=$!
# Pause for Ollama to start.
sleep 5
echo "🔴 Retrieving model..."
ollama pull phi3:medium
echo "🟢 Done!"
# Wait for Ollama process to finish.
wait $pid
Вы работаете в Linux? Сначала вам следует установить переменные env.