Обновляют ли тома Docker также приложение Source?
Я следил за учебниками на YouTube от двух разных создателей, и в обоих случаях они начинают со свежей директории, где нет ничего, кроме виртуальной среды. Затем они добавляют 3 ожидаемых файла Dockerfile
, docker-compose.yml
и requirements.txt
.
Как и они, я создаю контейнер и запускаю его, чтобы увидеть успешно созданное приложение Django. Но вот тут-то и возникает проблема. Как только они останавливают или удаляют контейнер и возвращаются к приглашению терминала, то есть находятся в исходном приложении ОС, а не в контейнере, они оба могут сделать python manage.py runserver
и запустить сервер разработки, или мигрировать, но когда я нажимаю requirements.txt
на дереве проекта, я получаю уведомление, что Django не был установлен. Я могу понять это, потому что мы действительно установили Django в контейнер, но не в исходное приложение. Я знаю, что тома должны обновлять контейнер, если вы вносите изменения в исходный код приложения в вашей IDE, но не наоборот. Именно поэтому django не устанавливается. Вот файлы:
Dockerfile:
FROM python:3.8
ENV PYTHONUNBUFFERED=1
WORKDIR /django
COPY requirements.txt requirements.txt
RUN pip3 install -r requirements.txt
requirements.txt
asgiref==3.3.1
Django==3.1.7
pytz==2021.1
sqlparse==0.4.1
psycopg2-binary>=2.8
mysqlclient>=2.0
docker-compose.yml
version: "3.8"
services:
app:
build: .
volumes:
- .:/django
ports:
- 8000:8000
image: app:django
container_name: django_container
command: python manage.py runserver 0.0.0.0:8000
depends_on:
- db
db:
# image: postgres
# volumes:
# - ./data/db:/var/lib/postgresql/data
# environment:
# - POSTGRES_DB=postgres
# - POSTGRES_USER=postgres
# - POSTGRES_PASSWORD=postgres
# container_name: postgres_db
image: mysql:5.7
environment:
MYSQL_DATABASE: 'django-app-db'
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
volumes:
- ./data/mysql/db:/var/lib/mysql
Команды следующие:
docker-compose build
docker-compose run --rm app django-admin startproject core .
docker-compose up
docker exec -it django_app/bin/bash
Когда я делаю build, (создаю образ) и compose up (запускаю контейнер), я вижу, да, что каталог с именем core и все его файлы, wsgi.py settings.py и т.д. созданы, но они, похоже, активны только для контейнера. Как только я выхожу из контейнера, если я пытаюсь работать с manage.py, я получаю уведомление о том, что "django не был установлен"