LINUX.ORG.RU

Проблема с volumes в docker-compose

 


0

1

Добрый день. Столкнулся с проблемой

docker-compose

...
volumes:
  - /home/andrey/lib:/opt/lib
...

Dockerfile

FROM python:3.7-slim

RUN apt-get update
RUN apt-get install -y gcc cmake
WORKDIR .
COPY ./requirements.txt requirements.txt
RUN pip install -r requirements.txt
RUN python /opt/lib/setup.py install
CMD ["python", "/app/run.py"]

В процессе запуска вроде как должна установить питоновская либа из volumes, но я получаю

python: can't open file '/opt/lib/setup.py': [Errno 2] No such file or directory

★★

Последнее исправление: Andreezy (всего исправлений: 2)

Так и должно быть. Сначала собираешь образ, потом запускаешь из него контейнер с натянутым volume.

melkor217 ★★★★★
()
Ответ на: комментарий от Andreezy

На всякий случай повторю, volume - свойство запущенного контейнера, а не образа.

Либо заранее клади результат работы скрипта в образ (upd: из такого пути на самом деле нельзя запустить, надо сделать COPY или ADD в контейнер сначала)

RUN python /home/andrey/lib/setup.py install

Либо при старте контейнера лезь в volume и запускай свой скрипт

CMD ["sh", "-c", "python /opt/lib/setup.py install; python3 /app/run.py"]

Зависит от того, чего ты хочешь добиться.

melkor217 ★★★★★
()
Последнее исправление: melkor217 (всего исправлений: 1)
Ответ на: комментарий от melkor217

Либо при старте контейнера лезь в volume и запускай свой скрипт

Это как-то больше похоже на использование контейнеров как легковесных виртуалок

Begemoth ★★★★★
()

Тебе надо каталог с исходниками своей программы скопировать (ADD или COPY) в сборочный контейнер и оттуда установить программу, затем удалить исходники.

Недоступность томов во время сборки - это фича, иначе процесс сборки стал бы зависеть от своего предыдущего состояния. В ряде случаев это надо и ЕМНИП этого можно достичь, но это не твой случай.

Begemoth ★★★★★
()
Ответ на: комментарий от Andreezy

Так может 2гб - не совсем библиотека а всякое барахло?

invy ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.