Всем привет,
docker-compose.yml
version: '2' services: web: build: . command: python3 testDj/manage.py runserver 0.0.0.0:8000 ports: - "8888:8000"
Dockerfile
FROM python:3 WORKDIR /opt/web/app COPY . /opt/web/app RUN pip3 install -r requirements.txt
Как закэшировать загруженные модули?
При старте докера выполняется загрузка модулей пайтоне, а это долго.
Запускаю докер с pycharm docker-compose
Анонимный пользователь Изменен статус публикации
Необходимо сначала скопировать requirements.txt, и поставить пакеты, а потом копировать весь проект. Т.к. докер собирает слоями, то он начнет с того места, где произошли изменения, и не будет ставить пакеты заново.
Dockerfile должен будет выглядеть следующим образом:
FROM python:3 COPY requirements.txt /opt/web/app RUN pip3 install -r requirements.txt WORKDIR /opt/web/app COPY . /opt/web/app
docker-compose.yml
version: '2' services: web: image: python:3 container_name: python_web volumes: - ./:/opt/web/app working_dir: /opt/web/app command: python3 testDj/manage.py runserver 0.0.0.0:8000 ports: - "8888:8000"
В этом случаи Dockerfile вовсе не нужен.
Makefile
# Start docker container start-container: docker-compose up -d # Stop docker container stop-container: docker-compose stop # Dependencies dep-install: pip3 install -r requirements.txt # Dependencies install into container dep-install-into-container docker-compose exec web bash -c "make dep-install"
В любой момент можно поставить зависимости не останавливая контейнер, правда я не знаю, как это будет взаимодействовать с уже запущенном приложении. С питоном никогда не работал.
Я бы так сделал