Docker don't create volume
Я делаю бота с pyTelegramBotAPI и использую docker. Образы и контейнеры собираются хорошо и мой бот работает в докер контейнере и его видно в самом телеграме. Но я хочу сделать 'hot change' (в случае изменения кода - докер контейнер будет обновляться автоматически). Похоже что проблема в Volume потому что когда я пытаюсь посмотреть docker volume ls возвращается пустой лист. С самим докером проблем нет, другие приложения собираются нормально, volume создаются. Я запускаю сборку командой docker-compose up --build
Мой Dockerfile
FROM python:3.8.3-alpine
RUN mkdir /app
WORKDIR /app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN apk add --no-cache jpeg-dev zlib-dev freetype-dev
RUN apk add --no-cache --virtual .build-deps build-base linux-headers
COPY ./requirements.txt .
RUN pip install -r requirements.txt
COPY . /app/
Мой docker-compose.yml. main.py - это главный фаил телеграм бота. Портов и хостов здесь не пробрасывал.
version: '3.7'
services:
bot:
build: .
command: python main.py
restart: always
env_file:
- .env
volumes:
- ./:/app
Ответы (1 шт):
У вас написано:
volumes:
- ./:/app
Именованый volume делается так: - data:/data -- /data внутри соответствует volume-у data. Но, для этого вопроса оно не надо.
Вам надо, чтобы папка с кодом на хосте соответствовала чему-то внутри:
- .:/app.
Это эначит /app внутри соответствует текущей папке на хосте.
Это не именованый volume, и docker volume ls его не покажет.
Предполагается, что код в текущей папке вместе с docker-compose.yml.
Теперь, если под поменять, внутри будут видны изменения.
Дальше смотрите, как делать ваш 'hot change'. Это зависит от фреймворка.
Если руками, то можно, чтоб сама программа раз в секунду проверяла дату изменения своего исходника в /app, и делала exit. A докер ее переподнимал.