#python #docker #docker_compose
Всем привет, 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
Ответы
Ответ 1
Необходимо сначала скопировать 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Ответ 2
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" В любой момент можно поставить зависимости не останавливая контейнер, правда я не знаю, как это будет взаимодействовать с уже запущенном приложении. С питоном никогда не работал. Я бы так сделал
Комментариев нет:
Отправить комментарий