Изучаю docker, как это работает?
Я совершенно запутался в работе докера. Хочу просто запустить простенький тестовый бэк на джанго + gunicorn + nginx. Вводные данные: Dockerfile web:
FROM python:3.10
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
RUN apt-get update && apt-get install -y netcat-openbsd
WORKDIR /app
RUN pip install --upgrade pip
COPY req.txt /app/
RUN pip install -r req.txt
COPY . /app
Dockerfile nginx
FROM nginx
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
docker-compose.yml
version: '2.20.2'
services:
web:
build: ./
command: gunicorn gems.wsgi:application --bind 0.0.0.0:8000
volumes:
- static_vol:/app/static
expose:
- 8000
nginx:
build: ./nginx
ports:
- 1337:80
volumes:
- static_vol:/app/static
depends_on:
- web
volumes:
static_vol:
файловая система проекта на хосте:
Команда которую я использую для создания контейнера
docker-compose build
Команда которую я использую для запуска контейнера
docker-compose up
Так же когда хочу пересобрать контейнер использую
docker-compose down
Вопросы:
С самого начала у меня по какой-то причине req.txt у меня находился и в корне /app и в папке static в обоих контейнерах(nginx, web). И в папке static кроме req.txt ничего не было, хотя как я думал там должны быть файлы из static хоста. Это ладно выполнил:
python manage.py collectstatic
Статика admin drf появилась. Как я понял когда монтируешь и связываешь тома между контейнерами они по умолчанию должны быть пустыми внутри контейнера? Почему в моем случае там был req.txt?Для эксперимента я удалил абсолютно все images и containers. То есть после команд:
docker images -a
docker container ls -a
было пусто. Начал собирать заново и вдруг те файлы которые я добавил в удаленном контейнере до удаления уже есть в новом. Окей, я удалил эти файлы внутри контейнра зайдя в него с помощью exec. сделал down опять удалил все образы и контейнеры и заново создаю и опять эти файлы там есть. Так вот, объясните как и откуда докер подтягивает эти файлы и есть ли способ создать контейнер не основыаясь на прошлом?