Предотвратить docker -композицию от переустановки require.txt при использовании встроенного образа - PullRequest
0 голосов
/ 19 марта 2020

У меня есть приложение AB C, которое я хочу поместить в среду docker. Я собрал Dockerfile и получил образ abcd1234, который использовал в docker -compose.yml. Но при попытке создать docker -compose все файлы require.txt переустанавливаются. Может ли он не использовать уже существующий образ и не дать времени переустановить его?

Я новичок в docker и пытаюсь понять все параметры. Кроме того, правильный ли контекст? в docker -compose.yml или он должен содержать путь внутри образа?

PS, мой docker -compose.yml не находится в той же директории проекта, потому что я буду использовать несколько изображений для показа Другие порты , Спасибо!

1 Ответ

2 голосов
/ 19 марта 2020

Каталог context: - это каталог в вашей хост-системе, который включает Dockerfile. Это тот же каталог, который вы передаете docker build, и часто это просто текущий каталог ..

В Dockerfile Docker может кэшировать отдельные шаги сборки, так что он не повторяет их, но только до тех пор, пока не достигнет точки, где что-то изменилось. Это «что-то» может быть измененной RUN строкой, но в точке вашего COPY, если какой-либо файл вообще изменится в вашем локальном дереве исходных текстов, что также сделает недействительным кеш для всего после него.

По этой причине типичный Dockerfile имеет несколько «фаз»; Вы можете повторить этот шаблон и на других языках. Вы можете реструктурировать свой Dockerfile в следующем порядке:

# 1. Base information; this almost never changes
FROM python:3.6-slim-buster AS build
MAINTAINER ABC
ENV PYTHONUNBUFFERED 1
WORKDIR /ABC

# 2. Install OS packages.  Doesn't depend on your source tree.
# Frequently just one RUN line (but could be more if you need
# packages that aren't in the default OS package repository).
RUN apt-get update && \
    DEBIAN_FRONTEND=noninteractive apt-get upgrade -y && \
    DEBIAN_FRONTEND=noninteractive apt-get install -y \
      build-essential unzip libxrender-dev libpq-dev

# 3. Copy _only_ the file that declares language-level dependencies.
# Repeat starting from here only if this file changes.
COPY requirements.txt .
RUN pip install -r requirements.txt

# 4. Copy the rest of the application in.  In a compiled language
# (Javascript/Webpack, Typescript, Java, Go, ...) build it.
COPY . .

# 5. Explain how to run the application.
EXPOSE 8000
CMD python manage.py migrate && \
    python manage.py runserver 0.0.0.0:8000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...